如何在 ASP.NET MVC 中使用 jQuery ajax 方法将数据列表发送到控制器操作方法?
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC 中使用 jQuery ajax 方法将数据列表发送到控制器操作方法?【英文标题】:How to send a list of data to Controller Action method using jQuery ajax method in ASP.NET MVC? 【发布时间】:2015-02-09 21:59:28 【问题描述】:这是我的行动方法
public JsonResult GetById(IEnumerable<Guid> idList)
//.....
还有我的 javascript 。我正在使用 li 元素的 id 属性
创建一个字符串数组var idArr = [];
var list = $("#ulApplications li");
$.each(list, function () idArr.push($(this).attr("id")) );
$.ajax(
type: "GET",
url: "/rolemanagement/application/GetById/",
contentType: false,
datatype: "json",
data: 'idList': idArr ,
success:........
在我的 Action 方法中,我没有得到任何数据。看来我错过了一些东西。 谢谢
【问题讨论】:
它试图将 URL 的查询字符串映射到 GUID 列表,这至少可以说是混乱的 :) 将post
与您的数组一起使用可以简化这一点。只需使用data: idArr
,它应该映射唯一的数据项
【参考方案1】:
将您的 ajax 更改为
$.ajax(
type: "GET",
url: "/rolemanagement/application/GetById", // should use '@Url.Action(..)'
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify( idList: idArr ), // stringify
success: ....
)
【讨论】:
还是不行,我认为默认模型绑定器无法将接收到的数据转换为 Guid 列表。 这些值是有效的 GUID 吗?尝试将其更改为IEnumerable<string> idList
(必须承认我从未尝试将 GUID 传递给控制器)
也为了测试,在客户端创建一个虚拟列表,比如var idArr = ["Item 1", "Item 2"];
【参考方案2】:
我尝试了下面的代码,似乎工作正常,
$.ajax(
type: "GET",
url: "@Url.Action("GetById", new area = "rolemanagement", controller = "application")",
data: idList: [ a: 'a' , a: 'b' ] ,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) console.log(data); ,
error: function () throw new Error("Error occurred.");
);
@stephen 已经给出,其中甚至不需要 stringify 来发送数据。
【讨论】:
【参考方案3】:在 *** 和其他博客上搜索后。我找到了一个对我有用的解决方案,尽管上面给出的答案非常正确,但它们对我没有用。这是我的答案
var IdList = idList:idArr
$.ajax(
type: "GET",
url: "/rolemanagement/application/GetById/",
contentType: false,
datatype: "json",
data: IdList,
traditional: true,
success:
function (data)
alert(data);
,
【讨论】:
以上是关于如何在 ASP.NET MVC 中使用 jQuery ajax 方法将数据列表发送到控制器操作方法?的主要内容,如果未能解决你的问题,请参考以下文章
Aspose.word在asp.net mvc中如何使用的个人总结
如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?