我有这样一个类:
public class SomeModel
{
public List<Item> Items { get; set; }
public SomeModel()
{
this.Items = new List<Item>();
}
}
在表单发布时可以有可变数量的 Item
,从零到很多。我正在使用 javascript 在提交时动态附加隐藏的输入字段:
$("#container").children(".item").each(function (i) {
form.append('<input type="hidden" name="Items[' + i + '].Id" value="' + $(this).val() + '" />');
});
然而,提交后,我得到这个错误:
System.NotSupportedException: Collection is read-only.
呈现的语法与我使用 @Html.HiddenFor(model => model.Items[i].Id)
和 model.Items
得到的基本相同> 是一个数组而不是一个列表,并且工作正常。这里出了什么问题?
Action 方法签名:
public ActionResult Post(SomeModel m)
{
最佳答案
您的 Array 可能正在处理 Insert(创建新对象的地方)。
当您尝试更新模型时会出现此问题。
对我来说,替换 string[]
至 List<string>
解决了问题。
//instead of....
public string[] TagsArray { get; set; }
//I now have
public List<string> TagsArray { get; set; }
关于c# - 绑定(bind)到列表的模型抛出 "Collection is read-only"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405400/