为什么在这种情况下id
在到达Action时会为空?
的Javascript
$("#ajax-submit").click(function () {
var data = { setup: $("form").serialize(), id: "12345" };
$.ajax({
type: 'POST',
url: "/MyController/Process",
data: JSON.stringify(data),
success: function () { alert("Successful"); },
dataType: "json"
});
});
动作
[HttpPost]
public ActionResult Process(SetupModel setup, string id)
{
// id is null, setup is not!
}
如果我将javascript更改为:
$.ajax({
type: 'POST',
url: "/MyController/Process",
data: { setup: $("form").serialize(), id: "12345" },
success: function () { alert("Successful"); },
dataType: "json"
});
然后id
绑定,但setup
没有绑定!
目标
我正在尝试开发一个逐步向导,其中整个模型在单个视图中呈现,并使用javascript显示/隐藏div以模拟前往下一页/上一页。
但是,我遇到的问题是,其中一个步骤需要建立一个列表(不提交整个模型)。为了实现这一点,我试图在那时提交数据(使用额外参数),更新控制器中的模型,然后使用更新的模型重新加载视图。
答案 0 :(得分:3)
代码中的细微变化。
$.ajax({
type: 'POST',
url: "/MyController/Process",
data: $("form").serialize() + '&id=12345',
success: function() {
alert("Successful");
},
dataType: "json"
});
这将解决问题
答案 1 :(得分:2)
试试这个
$("#ajax-submit").click(function () {
id= "12345"; //
var data = { setup: $("form").serialize()};
$.ajax({
type: 'POST',
url: "/MyController/Process/"+id,
data: JSON.stringify(data),
success: function () { alert("Successful"); },
dataType: "json"
});
});
答案 2 :(得分:0)
您无法将其添加为查询字符串的一部分,因为默认路由期望“id”成为网址路径的一部分:
“{控制器} / {行动} /(编号)”
在您的$ .ajax调用中,网址应为“/ MyController / Process /”+ id