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

发布于 2024-10-29 00:38:40 字数 839 浏览 3 评论 0原文

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

当我检查通过 Firebug 中的 AJAX 发送的对象时,那里有正确的值,但在我的控制器上放置断点后,收到的值是一个空列表或数组或我尝试将其设置为的任何类型。我对使用 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);
    }

I'm trying to pass an array from a jQuery function to my controller. The array contains content and the id of the div holding that content.

When I check the objects which are being sent via the AJAX post in Firebug the correct values are there but after placing a breakpoint on my controller the received value is an empty List or Array or whatever type I try to set it to. I'm fairly new to using JSON to pass data to my controllers so would appreciate some help in where I'm going wrong.

jQuery function called on "submit" click. The array is globally declared in my script and is added to each time a new area is filled with content.

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);
            }
        });
    }

Test receiving controller

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初相遇 2024-11-05 00:38:40

我通过在进行 get 调用之前将传统属性设置为 true 来实现此功能。即:

jQuery.ajaxSettings.traditional = true

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

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

I got this working by set the traditional property to true before making the get call. i.e.:

jQuery.ajaxSettings.traditional = true

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

I found the solution here: Pass array to mvc Action via AJAX

漆黑的白昼 2024-11-05 00:38:40

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

You may take a look at the following blog post. Hopefully it will clarify things up. Basically there are two cases: ASP.NET MVC 3 where you can send JSON requests to controller action out of the box and previous ASP.NET MVC versions where you need to use a custom JsonValueProviderFactory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文