2012-10-27 31 views
0

我的搜索頁面有很多參數,在此頁面中我有一些用於當前搜索的過濾器。
我只是想改變我的路線中的一些值。僅更改當前路線的一些值

一個例子:

http://www.example.com/{controller}/{action}/{brand}/{model}/{color}/{price} 

在我的搜索頁面我有一個表格,我可以改變顏色和價格:

HTML:

@using (Html.BeginForm("action", "controller", FormMethod.Post)) 
{ 
    @Html.DropDownListFor(m => m.Color, Model.Colors) 
    @Html.DropDownListFor(m => m.Price, Model.Prices) 
    <input type="submit" value="Search" /> 

} 

控制器:

[HttpPost] 
public ActionResult Action(SearchModel search) 
{ 
    //I can get the Price and Color 
    string color = search.Color; 
    string price = search.Price; 

    //Now I want to get the values of brand and model 

    return RedirectToRoute("Action",new 
    { 
     controller = "Controller", 
     action = "Action", 
     color = color, 
     price = price, 
     brand = ????, 
     model = ???? 
    }); 

} 

M Ÿ搜索有比這多很多參數......我不想把他們隱藏字段與模型給他們:\

感謝

+0

究竟是什麼,你不想要?隱藏字段?如果這些是您的搜索參數,那麼它們應該對用戶可見,不是?或者是用戶輸入可能會改變將被髮送用於搜索的參數的情況? – nieve

+0

嗨!我只想抓住控制器的品牌和模型值(在這個例子中)。用戶輸入只會改變顏色和價格值。 – vpascoal

回答

0

爲什麼不把他們的查詢字符串呢?然後,它會是這樣的:

http://www.example.com/something.aspx?color=red&price=100

然後你就可以拿起你想要的東西,忽略其他的內容,順序並不重要。

希望這回答你的問題,沒有真正明白它是誠實的。

+0

對不起,如果我沒有讓自己清楚,但您的答案不符合我的路線:http://www.example.com/ {controller}/{action}/{brand}/{model}/{color}/{價格}我想要的基本上是用戶提交表單後,用戶將被重定向到具有新顏色和價格的網址,並保持品牌和型號的價值。 – vpascoal

0

我找到了解決方案。

我需要這樣做:

@using (Html.BeginForm("action", 
         "controller", 
         new { brand = ViewContext.RouteData.Values["brand"], 
          model = ViewContext.RouteData.Values["model"] }, 
          FormMethod.Post)) 
{ 
    @Html.DropDownListFor(m => m.Color, Model.Colors) 
    @Html.DropDownListFor(m => m.Price, Model.Prices) 
    <input type="submit" value="Search" /> 

} 

然後在控制器:

[HttpPost] 
public ActionResult Action(SearchModel search) 
{ 

    return RedirectToRoute("Action",new 
    { 
     controller = "Controller", 
     action = "Action", 
     color = search.Color, 
     price = search.Price, 
     brand = search.Brand, 
     model = search.Model 
    }); 

} 

如果有人知道另一種解決方案,請讓我知道。 謝謝。