2012-04-07 6 views
3

DropDownの変更でアクションを実行するのは面白いです。今ではAjaxやJavaScriptを使用したくないので、ポストバックが必要です。 これは私の編集コードの表示です:DropDownListForを変更してアクションを実行ASP.NET MVC3でRazor View Engineのパスパラメータを使用

@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> 

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

返されたURLは、このようなものです:

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

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

答えて

2

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

@Html.DropDownListFor(model => Model.Title, MySelectList, new { @onchange = "location.href = http://MyProject/Products/ProductPoint/MajorCategoryChange?PPId=1&CategoryId=123;" }) 
+0

は答えのため – Saeid

0

あなたがonchangeを使用するだけでなく、あなたはJavaScriptを使用しないことを言うようにあなたの質問は、少し紛らわしいです。 onchangeはjavascriptでのみ動作します。 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" /> 
} 

あなたはそれはあなたがCategoryIdTitleからモデルのパラメータ名を変更したい場合がありますので、あなたの区分のために必要な値は、名前Titleとの結合モデルを通って来る設定していたよう。たとえば、アクションメソッドでパラメータ名を変更します。私はあなたの正確なコードを使用し

[HttpPost] 
public ActionResult MajorCategoryChange(int PPId, int Title) 
{ 
    // ... 
} 
+0

おかげで、実際に私はあなたが送信ボタンを言ったように(ではない他のボタンで、変更ドロップダウンにアクションを実行するために実装が必要、まだ何も変更、鋼同じ問題を、言っ) – Saeid

+0

次に、@ Html.DropDownListFor(model => Model.Title、MySelectList、new {@onchange = "this.form.submit()"})を追加してみてください。 – ngm

+0

編集ビューにdropdownforがあると仮定し、提案コードを使用すると、MajorCategoryChangeアクションを変更する必要があります。編集アクションを再度実行するか、httppostの編集アクション – Saeid

関連する問題