我的搜索页面有很多参数,在这个页面中我有一些当前搜索的过滤器 我只想改变路线中的一些值。
一个例子:
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 = ????
});
}
我的搜索有比这更多的参数......我不想把它们放在隐藏的字段中并随模型一起发送:\
由于
答案 0 :(得分:0)
为什么不把它们放在QueryString中呢?然后它看起来像这样:
http://www.example.com/something.aspx?color=red&price=100
然后你可以拿起你想要的东西,忽略其余的,顺序也无关紧要。
希望这能回答你的问题,说实话并不是真的理解。
答案 1 :(得分: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
});
}
如果有人知道其他解决方案,请告诉我。 谢谢。