3

ドロップダウンの変更でアクションを実行するのは興味深いです。現時点では、Ajax や JavaScript を使用したくありません。ポストバックが必要です。これは私の編集ビューコードです:

@Html.DropDownListFor(model => Model.Title, MySelectList)

そして私のhtml dom:

<select name="Title" id="Title">
    <option value="7" selected="selected">AV</option>
    <option value="9">HS</option>
    <option value="8">IT</option>
</select>

MajorCategoryChangeそのため、ドロップダウンのパラメーターを使用して ドロップダウン実行アクションを変更する必要があり、ドロップダウンがビューアクションの編集にあることPPId = Model.IdCategoryId = selectedoption.Value 注意し、変更して別のアクションを実行する必要があります。

返される URL は次のようになります。

"http://MyProject/Products/ProductPoint/MajorCategoryChange?PPId=1&CategoryId=123"

あなたの提案は何ですか?

4

2 に答える 2

2

URLだけでなく、JavaScriptコードをonchange-attributeに配置する必要があります。ユーザーを別のページにリダイレクトする場合は、を使用できますlocation.href

@Html.DropDownListFor(model => Model.Title, MySelectList, new { @onchange = "location.href = http://MyProject/Products/ProductPoint/MajorCategoryChange?PPId=1&CategoryId=123;" })
于 2012-04-07T10:24:45.490 に答える
0

onchangeあなたが使いたいと言っているだけでなく、javascriptを使いたくない と言っているので、あなたの質問は少し混乱しています。onchangeJavaScript でのみ動作します。JavaScript を使用したくない場合は、選択をフォームでラップし、送信ボタンを使用してポストバックを取得する必要があります。

例えば

@using (Html.BeginForm("MajorCategoryChange", "YourController", FormMethod.Post))
{
    <input type="hidden" name="PPId" value="@Model.Id" />
    @Html.DropDownListFor(model => Model.Title, MySelectList)
    <input type="submit" value="Go" />
}

設定すると、CategoryId に必要な値がモデル バインディングを通じて名前で取得されるため、モデルのパラメーター名を からにTitle変更することをお勧めします。または、アクション メソッドのパラメーター名を変更します。TitleCategoryId

[HttpPost]
public ActionResult MajorCategoryChange(int PPId, int Title)
{
    // ...
}
于 2012-04-07T11:09:46.740 に答える