【问题标题】:Passing Array from jQuery to MVC.NET Controller giving null result on controller but values present on jQuery function将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值
【发布时间】: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);
    }

【问题讨论】:

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


    【解决方案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 对象中发送的键,结果就在那里!!!谢谢达林
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 2020-11-09
      • 2015-01-25
      • 2021-04-27
      相关资源
      最近更新 更多