我无法通过$ .post传递数组。
var privIDs = [1,2,4,5];
$.post("/Home/GrantPrivilegesToUser", { privilegeIDs: privIDs }, function (data) {
alert("Data Loaded: " + data.success);
});
public ActionResult GrantPrivilegesToUser(int[] privilegeIDs)
{
return Json(new {success=true});
}
该操作将privilegeID视为null。有什么想法吗?
答案 0 :(得分:1)
我使用JSON使用JSON2库将数据作为字符串传递:http://www.json.org/js.html
var privIDs = [1,2,3,4,5];
var data = JSON.stringify({privilegeIDs : privIDs});
$.POST("/Home/GrantPrivilegesToUser", data, function (data) {
alert("Data Loaded: " + data.success);
});
该操作将使用WebMethod类型:
[WebMethod]
public object Entry_GetFormOptions(string privilegeIDs)
{
return new {success=true};
}
内置和第三方函数都可以解析收到的JSON以访问权限ID。
如果这有用或无效,请告诉我。
答案 1 :(得分:1)
您需要为jQuery ajax设置jQuery.ajaxSettings.traditional = true;
。在jQuery 1.4中,他们改变了在表单中序列化项目的方式。
请参阅:
http://forum.jquery.com/topic/nested-param-serialization
和: How can I post an array of string to ASP.NET MVC Controller without a form?
答案 2 :(得分:0)
这就是我最终要做的事情。可能对某人有帮助......
var privIDs = [1,2,4,5];
$.ajax({
type: "POST",
url: "/Home/UpdatePrivileges",
data: { privilegeIDs: privIDs },
traditional: true,
success: function (json) {
alert(json.success);
}
});
如果使用.ajax而不是.post,则可以包含traditional: true