c# - MVC 中的 json 对象绑定(bind)

标签 c# ajax jquery asp.net-mvc-4

我似乎在将包含数组的 javascript 对象传递到我的 MVC Controller 时遇到问题。我有一个包含两个字符串和一个字符串数组的对象。这两个字符串正确绑定(bind),但是一旦我向对象添加数组,我就会收到以下错误:

集合是只读的。

这是我的 JS + Ajax 代码:

   $('.submit').on('click', function() {

        var viewModel = {
            FName: "John",
            LName: "Doe",
            DaysOfTheWeek: ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
        };

        console.log(viewModel);

        $.ajax({
            url: "/Home/JsonMethod",
            type: "POST",
            data: JSON.stringify(viewModel),
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                console.log(data);
            }
        });

    });

这是我的 MVC Controller :

    public JsonResult JsonMethod(Person person)
    {
        return Json(person, JsonRequestBehavior.AllowGet);
    }

这是 Person 类:

    public class Person
    {
        public string FName { get; set; }
        public string LName { get; set; }
        public string[] DaysOfTheWeek { get; set; }

        public Person()
        {
            DaysOfTheWeek = new string[7];
        }
    }

我在网上看过,但找不到任何可以解决以下问题的内容。对此事的任何帮助都会很棒。

最佳答案

问题可能是因为您已经在 Person 的构造函数中初始化了数组,并且当反序列化器发现已经存在集合时 - 它会尝试向其中添加而不是创建新集合。尝试从构造函数中删除初始化或将类型更改为列表。

关于c# - MVC 中的 json 对象绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735958/

相关文章:

jquery-ui - jQuery 可手动排序 触发 sortstop 事件

c# - 如何编译运行单个class文件的cs文件?

c# - 使用 ORM 创建数据库

javascript - 如何使用 Tampermonkey 脚本替换 AJAX 驱动的页面文本和选择属性中的大量单词?

javascript - 固定 header jQuery Mobile

jquery - 两个滚动条的问题?

C# 计算重复数字

c# - Winform布局完成后触发事件

javascript - 通过 .scope().call() 从 JS 外部调用 Angular 服务挂起请求

javascript - 访问 Node 的 Express bodyParser() 解析的 JSON 字符串