我正在尝试传递一个字符串(表示已单击的按钮)和表单的内容,但是当代码到达actionresult时,vModel对象始终为null。有人能帮我解决吗?
以下是代码片段:
var form = $('#Application');
if (form.valid()) {
var data = {
'submitButton': "Submit your application",
'vModel': JSON.stringify(form.serialize())
};
$("#submit-application-dialog").dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
buttons: {
"Submit application": function () {
$.ajax({
url: form.attr('action'),
type: 'POST',
data: data,
success: $("#submit-application-dialog").dialog("close")
});
},
Cancel: function () {
$(this).dialog("close");
}
}
});
}
动作结果:
[HttpPost]
public ActionResult Application(string submitButton, ApplicationViewModel vModel)
{
...
非常感谢任何帮助。
谢谢。
答案 0 :(得分:0)
我通过将值附加到查询字符串(如下所示)而不是控制器操作参数来完成类似的操作。
var myData = $('#frmMyForm').serialize();
myData = myData + "&ButtonClicked=" + "Button1";
$.ajax({
type: "POST",
url: "@Url.Action("MyActionName", "MyControllerName")",
data: myData,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function(data) {
\\Do stuff here if needed;
}
然后在控制器中我从表单集合中提取值。
var buttonName = Request.Form["ButtonClicked"];
可能会有更好的或者我们说这样做的笨重方式,但这对我有用。
希望有所帮助
您好,我昨晚想到了一个更好的解决方案。向视图模型添加属性,可能称为“ButtonClicked”。
然后在JQuery中,抓住提交的click事件,如下所示,并相应地设置按钮名称。
<script>
$(document).ready(function () {
$(document).on("click", "#btnSubmitButton", function () {
$("#ButtonClicked").val("ThisButton");
});
});
</script>
然后将其绑定到已发布的模型。 感谢