参考Phil Haack的article,我可以在不使用顺序指示的情况下绑定到视图模型,例如:
public class FooViewModel
{
public int Id { get; set }
public decimal Amount { get; set; }
public ICollection<Bar> Bars { get; set; }
}
public class BarViewModel
{
public int Id { get; set; }
public string Baz { get; set; }
}
我的Foo/Edit.cshtml
:
<input type="hidden" name="Bars.Index" value="123" />
<input type="text" name="Bars[123].Baz" value="Chips" />
<input type="hidden" name="Bars.Index" value="caliente" />
<input type="text" name="Bars[caliente].Baz" value="Salsa" />
通过正常的HTTP Post请求提交表单时, Bars
被正确填充。但是,如果我将表单序列化为JSON,即使用serializeJSON
序列化表单然后通过AJAX提交,则JSON有效负载不正确:
{
"Id": 1,
"Amount": 26.4,
"Bars": {
"123": {
"Id": 1,
"Baz": "Chips"
},
"caliente": {
"Id": 2,
"Baz": "Salsa"
},
"Index": "caliente" <-- Extra property in the JSON object
}
}
无法绑定到Bars
中的FooViewModel
属性(Bars
变为空)。在使用具有非顺序索引的JSON对象时,如何绑定集合属性的任何想法?
答案 0 :(得分:0)
尝试使用
Dictionary<string, Bar>
对于你的Bars param,它应该能够理解你正在获得的序列化JSON。