我在使用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方法?
非常感谢您的意见和建议! 谢谢!
答案 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
希望它有所帮助。