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
});