MVC中的json对象绑定

Cin*_*Bun 3 c# ajax jquery asp.net-mvc-4

我似乎在向我的MVC控制器传递包含数组的javascript对象时遇到问题.我有一个包含两个字符串和一个字符串数组的对象.这两个字符串绑定正确,但只要我向对象添加一个数组,我就会收到以下错误:

集合是只读的.

这是我的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);
            }
        });

    });
Run Code Online (Sandbox Code Playgroud)

这是我的MVC控制器:

    public JsonResult JsonMethod(Person person)
    {
        return Json(person, JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

这是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];
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

小智 6

问题可能是因为你已经在Person的构造函数中初始化了数组,并且当反序列化器看到已经有集合时 - 它会尝试添加它而不是创建新的数组.尝试从构造函数中删除初始化或将类型更改为List.