如何在 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&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】:

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

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 方法将数据列表发送到控制器操作方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net MVC 6 中编辑和继续

Aspose.word在asp.net mvc中如何使用的个人总结

如何在使用 HttpClient 使用 Asp Net Web Api 的 Asp Net Mvc 中提供实时数据?

如何在 ASP.NET MVC 中使用多个表单元素

如何使用 MVC 的内容协商在 ASP.NET Core MVC 中间件中返回响应?

如何在 ASP.NET MVC 中使用路由修复 404?