ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作相关的知识,希望对你有一定的参考价值。
为什么在这种情况下id
在到达Action时为null?
$("#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以模拟前往下一页/上一页。
但是,我遇到的问题是,其中一个步骤需要建立一个列表(不提交整个模型)。为了实现这一点,我试图在那时提交数据(使用额外参数),更新控制器中的模型,然后使用更新的模型重新加载视图。
答案
代码中的细微变化。
$.ajax({
type: 'POST',
url: "/MyController/Process",
data: $("form").serialize() + '&id=12345',
success: function() {
alert("Successful");
},
dataType: "json"
});
这将解决问题
另一答案
试试这样
$("#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"
});
});
另一答案
您不能将其添加为查询字符串的一部分,因为默认路由期望“id”成为url路径的一部分:
“{控制器} / {行动} /(编号)”
在$ .ajax调用中,url应为“/ MyController / Process /”+ id
以上是关于ASP.NET MVC 3 - 通过ajax无法正常传递额外参数以及模型到操作的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 3 - Ajax.BeginForm 与 jQuery 表单插件
使用 AJAX 将 JavaScript 数组发布到 asp.net MVC 控制器
如何通过 ajax 使用数据库数据填充 ASP.NET MVC 4 下拉列表