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 = ????
    });

}

我的搜索有比这更多的参数...我不想将它们放在隐藏字段中并与模型一起发送:\

谢谢

4

2 回答 2

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
    });

}

如果有人知道另一种解决方案,请告诉我。谢谢你。

于 2012-10-27T20:59:11.683 回答
0

为什么不把它们放在 QueryString 中呢?然后它看起来像这样:

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

然后你可以拿起你想要的,忽略其余的,顺序无关紧要。

希望这能回答你的问题,说实话并没有真正理解。

于 2012-10-27T18:37:12.030 回答