使用$ .ajax将不同类型的多个参数传递给MVC方法

时间:2013-06-18 07:38:03

标签: ajax asp.net-mvc jquery asp.net-mvc-4

我在使用AJAX向控制器发布多个参数时遇到一些问题。我想将模型列表和按钮名称(字符串)传递给我的控制器。

jQuery的:

function PostForm(buttonname) {

    $.ajax({
        url: "/ControllerName/ViewName",
        type: "POST",
        dataType: "application/JSON",
        data: 
        JSON.stringify({ 
           listOfObjects = $('#form').serialize(),
           button : buttonname
        })
    });
};

局部视图:

<input name="buttonname" value="Name" onClick="PostForm('Name')" />

控制器:

[HttpPost]
public ActionResult ViewName(List<MyObject> listOfObjects ,string button)
{
//Obj should now contain the list of objects and button name
}

点击按钮,我得到了按钮名称的值,但是listobjects的数量是0。

如何将具有不同数据类型的多个参数传递给MVC方法?

非常感谢您的意见和建议! 谢谢!

4 个答案:

答案 0 :(得分:4)

我得到了解决方案。

function PostForm(buttonname) {

var data = $('#form').serialize();
var finaldata = data + "&buttonclicked="+buttonname;

$.ajax({
    url: "/ControllerName/ViewName",
    type: "POST",
    data: finaldata ,
    success: success function(){},
    error : error function(){}
    });
};

局部视图:

<input name="buttonname" value="Name" onClick="PostForm('Name')" />

控制器:

[HttpPost]

public ActionResult ViewName(List<MyObject> listOfObjects ,string buttonclicked)
{
//Obj should now contain the list of objects and button name
}

问题是我在按钮的名称和控制器中POST方法的输入参数使用相同的名称。这就是为什么我得到所有按钮名称的列表。 Neways现在正在工作..

感谢您的帮助!!!

答案 1 :(得分:0)

函数PostForm(buttonname){

$.ajax({
    url: "/ControllerName/ViewName",
    type: "POST",
    dataType: "application/JSON",
    data: JSON.stringify($('#form').serialize())
});

};

[HttpPost]
public ActionResult ViewName(FormCollection formCollection)
{
     // use formCollection["yourcontrol"] to get your post value
}

答案 2 :(得分:0)

试试这个:

查看:

function PostForm(buttonname) {

    $.ajax({
        url: "/ControllerName/ViewName",
        type: "POST",
        dataType: "application/JSON",
        data: { listOfObjects: data: $('#Form').serilize(), button: buttonname },
        JSON.stringify({ 
           listOfObjects = $('#form').serialize(),
           button : buttonname
        })
    });
};

控制器:

[HttpPost]
public ActionResult ViewName(MyObject[] listOfObjects ,string button)
{

}

答案 3 :(得分:0)

form.serialize()单独工作。有了额外的数据,它不起作用。 删除dataType并尝试这样:

data: $('#Form').serilize() + "&button=" + buttonname
希望它有所帮助。