在我离开并重新创建方向盘之前,有人能告诉我是否有自动执行此操作的方法吗?我有一个视图模型,其中包含另一个对象类型的数组,有点像这样:
public class ParentViewModel {
public int ID { get; set; }
public string Title { get; set; }
public ChildViewModel[] Children { get; set; }
}
public class ChildViewModel {
public string Description { get; set; }
public int Severity { get; set; }
}
我正在调用一个以父ViewViewModel作为参数的web api函数:
[HttpPost]
public void Test([FromBody]ParentViewModel vm) {
}
这是从一个可以拥有动态数量的子实体的网页调用的。该页面是使用asp.net/Razor创建的,因此它们被绑定到带有HTML的输入字段,如下所示:
<input aria-invalid="false" class="form-control" id="Children_0__Description" name="Children[0].Description" value="test" type="text">
我有一个javascript事件处理程序,它使用ajax来调用web api。我想将表单数据传递给它,因此我将表单序列化,使用deparam将其转换为对象,并在对象上调用JSON.stringify。不幸的是,这并没有把像#34; Children [0] .Description变成对象数组的东西,所以当它遇到web api时它并没有被映射到视图的数组属性模型。即,我的JSON看起来像这样:
{
"ID": "12",
"Children[0].Severity" : "3",
"Children[0].Description" : "Test",
"Children[1].Severity" : "5",
"Children[1].Description" : "Another",
"Title": "Hello"
}
而不是这样:
{
"ID": "12",
"Children" : [
{"Severity":"3", "Description":"Test"},
{"Severity":"5", "Description":"Another"},
],
"Title": "Hello"
}
我正准备编写一些代码来改造json,但是我猜测我首先做错了什么,或者已经有了一些能为我做这件事的事情。 - 有什么建议吗?