【问题标题】:How to send a list of data to Controller Action method using jQuery ajax method in ASP.NET MVC?如何在 ASP.NET MVC 中使用 jQuery ajax 方法将数据列表发送到控制器操作方法?
【发布时间】: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,它应该映射唯一的数据项

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


【解决方案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&lt;string&gt; 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】:

    在 stackoverflow 和其他博客上搜索后。我找到了一个对我有用的解决方案,尽管上面给出的答案非常正确,但它们对我没有用。这是我的答案

    var IdList = {idList:idArr}
    
            $.ajax(
                {
                    type: "GET",
                    url: "/rolemanagement/application/GetById/",
                    contentType: false,
                    datatype: "json",
                    data: IdList,
                    traditional: true,
                    success:
                        function (data) {
                            alert(data);
                        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 2011-05-06
      相关资源
      最近更新 更多