我想在没有提交按钮的表单中提交数据,而是在具有click事件的简单div中提交数据,并且控制器的操作应该将所有这些数据作为强类型视图模型接收。 例如,我有以下html
<form method="POST" id="frm" name="frm">
<input type="text" name="Texting"/>
<select name="Car">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<input type="checkbox" name="IsChecked" checked="checked"/>
</form>
@ PageResources.btnSearch
<script type="text/javascript">
function doAction() {
$.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
});
}
控制器的动作也是这样的
[HttpPost]
public ActionResult DoAction(TestViewModel model)
{
return Json(model, JsonRequestBehavior.AllowGet);
}
和视图模型
public class TestViewModel
{
public string Texting;
public string Car;
public bool IsChecked;
}
当调用动作时,问题是即使我在控件中输入了某些内容,模型也没有值 有什么问题?为什么mvc不会将我的数据解释为视图模型?
答案 0 :(得分:0)
在你的Jquery Doaction()函数中。准备视图模型如下。
var model={
Texting:$('#IdForInputText').val(),
Car:$('#IDforSelectList').val(),
IsChecked:$('#IDForCheckBox').is(':checked'),
}
或
var model={
Texting:$('input[name="Texting"]').val();
Car:$('select[name="Car"] option:selected').val(),
IsChecked:$('input[name="IsChecked"]').is(':checked');
}
然后使用
JSON.stringify(model)
希望它有所帮助。如果不理解,请留下评论