【发布时间】:2016-04-27 02:57:07
【问题描述】:
在我开始重新创建轮子之前,谁能告诉我是否有办法自动执行此操作?我有一个视图模型,其中包含另一个对象类型的数组,有点像这样:
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; }
}
我正在调用一个以 ParentViewModel 作为参数的 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">
我有一个使用 ajax 调用 web api 的 javascript 事件处理程序。我想将表单数据传递给它,所以我序列化表单,使用 deparam 将其转换为对象,并在对象上调用 JSON.stringify。不幸的是,这并没有将诸如“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,但我猜我要么一开始就做错了,要么已经有一些东西可以为我做这件事 - 有什么建议吗?
【问题讨论】:
标签: json ajax asp.net-web-api