Jquery 使用多个参数对控制器的Ajax调用
控制器:-Jquery 使用多个参数对控制器的Ajax调用,jquery,asp.net-mvc,Jquery,Asp.net Mvc,控制器:- $.ajax({ type: 'POST', url: '@Url.Action("AccountUpdate", "Customer")', async: false, data: { a:"ed", formCollection: $("#form1").serialize() } }); 问题:-在控制器帐户更新中,我得到了参数a=“ed”,这很好。 但是在FormCollection对象中,我得到了FormCollection对象,还有'a'
$.ajax({
type: 'POST',
url: '@Url.Action("AccountUpdate", "Customer")',
async: false,
data: { a:"ed", formCollection: $("#form1").serialize() }
});
问题:-在控制器帐户更新中,我得到了参数a=“ed”,这很好。
但是在FormCollection对象中,我得到了FormCollection对象,还有'a'对象
为什么表单集合对象接收“a”对象?它应该是唯一的formCollection对象
public void AccountUpdate(string a, FormCollection formCollection) {}
这是一条路要走
如果要添加一些额外的参数:
data: $("#form1").serialize()
通过这种方式,可以直接绑定到视图模型:
$.ajax({
type: 'POST',
url: '@Url.Action("AccountUpdate", "Customer")',
// async: false,
data: "a=ed&" + $("form1").serialize()
});
POST方法的参数是typeof
FormCollection
,它是一个保存所有提交的键/值对的类
将您的方法更改为
[HttpPost]
public ActionResult Index(string a, Customer customer)
{
...
}
并更改脚本以允许在方法中提交和绑定模型和附加值
[HttpPost]
public void AccountUpdate(string a, Customer model)
因为您的参数是typeof
FormCollection
,它是所有提交数据的集合。将其替换为YourModel formCollection
,其中YourModel
是您在视图中使用的模型。因此,我将控制器的参数更改为public void AccountUpdate(字符串a,Customer formCollection){}在Ajax中没有更改,现在我在formCollection中得到了null?我读到的是formCollection只包含表单范围内的元素,“a”没有在表单范围内定义,因为您的ajax数据
选项不正确。首先使用data:$(“#form1”).serialize(),
来确保您的模型绑定正确,然后我将向您展示如何发回附加参数。我以前只使用data:$(“#form1”).serialize()它工作得非常好感谢Lefty,但是customer对象现在为空,这是我的元素,形式为Thankyou LeftyX和Stephen Muecke。Stephen Muecke你的代码现在运行得很好,
var data = $("#form1").serialize() + '&' + $.param({ 'a': 'ed'});
$.ajax({
type: 'POST',
url: '@Url.Action("AccountUpdate", "Customer")',
data: data
});