我似乎在将包含数组的 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/