操作方法使用ASP.NET MVC 3和剃刀,我對MyViewModel
類一個強類型的視圖。在視圖中,我有一個由一組單選按鈕組成的AJAX表單。在它下面,我有一個正常的HTML表單,用於收集MyViewModel
的數據。根據在AJAX表單中選擇哪個單選按鈕,我想用一組默認值或其他值更新HTML表單。在AJAX表單中,我試圖發佈兩條數據:1)代表所選選項的值(基於單選按鈕value
參數);以及2)從視圖中選擇Model
。我希望控制器操作根據收到的選項更新模型,然後以更新後的模型對象作爲參數返回一個局部視圖。我該怎麼做呢?下面是AJAX的形式爲我嘗試代碼:MVC 3員額模型和附加參數HttpPost使用Ajax形式
@using (Ajax.BeginForm("MyAction", "MyController",
new AjaxOptions {
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "createForm"
}))
{
<div id="formOptions">
@foreach (Option op in Model.GetOptions()) {
<div class="editor-field">
@Html.RadioButton("option", op.OptionType, false, new { @id = op.ID, @name = op.ID, @title = @op.Description, @onfocus = "javascript:$(this).closest('form').find(':submit').first().click()" })
<label for="@op.ID">@op.Name</label>
</div>
}
</div>
@Html.Hidden("model", Model)
<input type="submit" value="Select" style="display:none;" />
}
我的問題是,在HttPost操作方法model
參數爲null。但option
參數似乎正確傳遞。我不確定我是否以不應該使用Html.Hidden
輸入的方式使用它,或者是什麼問題。如果需要,我可以發佈更多代碼。
這是我在做這樣的事情的第一次嘗試,所以讀了很多的(貌似)的類似問題後,我仍然無法破譯什麼我想要做的解決方案。我看到很多不同的東西,比如JSON編碼,使用JQuery等,但我不確定是否需要這些東西,或者如果我可以使用MVC功能來完成此操作(我寧願不重新編碼已經存在的東西內置於MVC 3)。如果有人能指出我正確的方向或可能給一個小代碼示例,它將不勝感激。而且,考慮到我的最終目標是什麼,如果有更好的方法來異步更新基於選項控件的表單,我會非常樂意聽到它。謝謝!
編輯:
我也注意到,使用HttpPost請求它不會使控制器,而是一個HTTPGET一樣。那裏有人嗎?這讓我瘋狂!
ADDED控制器的方法:
public PartialViewResult CreateForm(OptionType opType, MyViewModel model) {
model.ApplyOptionValues(opType);
return PartialView("_CreateForm", model);
}
你可以添加你想要發佈到取悅方法簽名? – timothyclifford 2012-08-13 07:09:15