将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值

Posted

技术标签:

【中文标题】将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值【英文标题】:Passing Array from jQuery to MVC.NET Controller giving null result on controller but values present on jQuery function 【发布时间】:2011-07-28 08:36:18 【问题描述】:

我正在尝试将一个数组从 jQuery 函数传递到我的控制器。该数组包含内容和包含该内容的 div 的 id。

当我检查通过 Firebug 中的 AJAX 帖子发送的对象时,正确的值就在那里,但是在我的控制器上放置一个断点后,接收到的值是一个空的 List 或 Array 或者我尝试将其设置为的任何类型。我对使用 JSON 将数据传递给我的控制器还很陌生,所以如果我出错了,我会很感激一些帮助。

在“提交”点击时调用的 jQuery 函数。该数组在我的脚本中全局声明,并在每次新区域填充内容时添加。

function postContent() 
        $.ajax(
            type: "POST",
            datatype: 'json',
            url: "/Admin/getContentArray",
            data: JSON.stringify(contentArray),
            contentType: 'application/json; charset=utf-8',
            success: function (result) 
                alert(result.Result);
            
        );
    

测试接收控制器

[HttpPost]
    public JsonResult getContentArray(List<Content> myPassedArray)
    
        var data = myPassedArray;
        return this.Json(null);
    

【问题讨论】:

【参考方案1】:

我通过在调用 get 之前将传统属性设置为 true 来实现这一点。即:

jQuery.ajaxSettings.traditional = true

$.get('/controller/MyAction',  vals: arrayOfValues , function (data) ... 

我在这里找到了解决方案:Pass array to mvc Action via AJAX

【讨论】:

【参考方案2】:

您可以查看following blog post。希望它能澄清事情。基本上有两种情况:ASP.NET MVC 3,您可以将 JSON 请求发送到开箱即用的控制器操作和以前的 ASP.NET MVC 版本,您需要使用自定义 JsonValueProviderFactory

【讨论】:

这很奇怪,因为我使用的是 MVC 3,我应该设置什么数据类型才能在我的控制器上接收这些数据?如上所述,将其设置为“内容”类型的列表会返回一个包含正确数量的条目但没有数据的列表。 你让我走上了正轨。我将我的内容模型设置为完全反映在 JSON 对象中发送的键,结果就在那里!!!谢谢达林

以上是关于将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值的主要内容,如果未能解决你的问题,请参考以下文章

如何从字节数组 c# MVC .NET Core 在 iframe 中显示 pdf

如何将变量从 jQuery 传递到 AngularJs 函数

将数组从jquery传递给python函数时如何设置url?

Jquery:将值数组从一个数组输入传递到另一个数组输入字段

将数组从 JavaScript 传递到 C# 的最佳方法?

将数据数组从表单传递到 ajax 到 PHP 发布文件