Ajax使用多个参数调用Controller

时间:2015-09-24 08:02:35

标签: jquery asp.net-mvc

$.ajax({
    type: 'POST',
    url: '@Url.Action("AccountUpdate", "Customer")',
    async: false,
    data: { a:"ed", formCollection: $("#form1").serialize() }
});

控制器: -

public void AccountUpdate(string a, FormCollection formCollection) {}

问题: - 在控制器AccountUpdate中我得到参数a =" ed"这很好。 但是在FormCollection对象中,我得到 formCollection对象以及' a' 对象 为什么表单集合对象接收' a'对象?它应该只是formCollection对象

2 个答案:

答案 0 :(得分:1)

data: $("#form1").serialize() 

是要走的路。

如果您想添加一些额外的参数:

$.ajax({
    type: 'POST',
    url: '@Url.Action("AccountUpdate", "Customer")',
    // async: false,
    data: "a=ed&" + $("form1").serialize()
});

这样您就可以直接绑定到视图模型:

[HttpPost]
public ActionResult Index(string a, Customer customer)
{
    ...
}

答案 1 :(得分:1)

POST方法的参数是typeof FormCollection,它是一个包含所有提交的键/值对的类。

将您的方法更改为

[HttpPost]
public void AccountUpdate(string a, Customer model)

并更改您的脚本以允许您的模型和附加值在方法

中提交和绑定
var data = $("#form1").serialize() + '&' + $.param({ 'a': 'ed'});

$.ajax({
    type: 'POST',
    url: '@Url.Action("AccountUpdate", "Customer")',
    data: data
});