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 に答える