ASP.NET MVC4 WebAPI Post控制器在POST缓冲区中接收json数据。 Object包含两个固定的名称属性headerData和rowData。 它们具有可变数量的属性,如
{"headerData": {
"Tasudok": "134",
"Kuupaev": "2015-11-23",
"Dokumnr": "135319"
},
"rowData": {
"Toode":"",
"Kogus":"0.0000",
"Nimetus":"öäölä<a",
"_rowsum":"0.00",
"Id":"1639",
"Dokumnr":"135319",
"_oper":"edit",
"_rowid":"1639"
}
}
例如,在某些调用中,rowData可能包含其他属性,并且可能缺少某些rowData属性。
使用默认路由的API/Entity/someid?culture=en&layout=1
等URL将数据发布到ASP.NET MVC4 Web API。
如何在WebAPI控制器中接收参数?
我根据How to receive dynamic data in Web API controller Post method
尝试了public class EntityController : APIController
{
public class Body
{ Dictionary<string, string> headerData { get; set; }
Dictionary<string, string> rowData { get; set; }
}
public HttpResponseMessage Post(string id, Body body,
[FromUri]string culture = null,
[FromUri]uint layout = 0
)
{ ... }
}
但是body.headerData和body.rowData都是空的。 如何将价值纳入其中?
答案 0 :(得分:3)
而不是
public class Body
{
Dictionary<string, string> headerData { get; set; }
Dictionary<string, string> rowData { get; set; }
}
明确将您的班级成员标记为公开,以便反序列化程序可以完成其工作!
以下内容应该有效:
public class Body
{
public Dictionary<string, string> headerData { get; set; }
public Dictionary<string, string> rowData { get; set; }
}
另外,请指定id来自url:
public HttpResponseMessage Post(Body body,
[FromUri]string id,
[FromUri]string culture = null,
[FromUri]uint layout = 0
)