How to receive dynamic data in WebAPI controller
ASP.NET MVC4 WebAPI Post控制器在POST缓冲区中接收json数据。
对象包含两个固定的名称属性,headerData和rowData。
它们具有数量可变的属性,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | {"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属性可能会丢失。
使用默认路由使用
如何在WebAPI控制器中接收参数?
我试图根据如何在Web API控制器中接收动态数据的Post方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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为空。
如何获取价值?
而不是
1 2 3 4 5 | public class Body { Dictionary<string, string> headerData { get; set; } Dictionary<string, string> rowData { get; set; } } |
明确将您的班级成员标记为公开成员,以便反序列化程序可以完成其工作!
以下应能工作:
1 2 3 4 5 | public class Body { public Dictionary<string, string> headerData { get; set; } public Dictionary<string, string> rowData { get; set; } } |
此外,还要指定ID来自网址:
1 2 3 4 5 | public HttpResponseMessage Post(Body body, [FromUri]string id, [FromUri]string culture = null, [FromUri]uint layout = 0 ) |