2012-04-07 61 views
3

我很有興趣在更改DropDown時運行Action。現在我不想使用任何Ajax或JavaScripts,我需要回發。 這是我的編輯視圖代碼:使用Razor View Engine在ASP.NET MVC3中使用傳遞參數更改DropDownListFor中的運行Action

@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.Id參數和CategoryId = selectedoption.Value注意,下拉是編輯視圖操作,並在更改我需要另一個操作運行它。

返回的URL是這樣的:

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

,你有何建議?

回答

2

你必須在onchange-屬性中添加一些JavaScript代碼,而不僅僅是一個URL。如果您想將用戶重定向到其他頁面,則可以使用location.href

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

我用你確切的代碼表示,沒有改變的是,鋼同樣的問題 – Saeid 2012-04-07 10:31:11

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" /> 
} 

如您有它設置,你想爲你的CategoryId將通過模型名稱Title結合進來的價值,所以你可能想在你的模型更改參數的名字從TitleCategoryId。或者在您的操作方法中更改您的參數名稱,例如

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

謝謝你的回答其實我需要一個實現運行在下拉改了,不與其他按鈕(如你所說提交按鈕的動作) – Saeid 2012-04-07 11:18:29

+0

然後嘗試添加@ Html.DropDownListFor(model => Model.Title,MySelectList,new {@onchange =「this.form.submit()」})。 – ngm 2012-04-07 11:25:03

+0

假設dropdownfor在編輯視圖中我需要運行MajorCategoryChange Action才能更改它,如果我只是使用您的建議代碼Edit再次運行或編輯httppost動作 – Saeid 2012-04-07 11:30:21

相關問題