尝试使用 OData webAPI 并使用参数调用操作,将其序列化为没有元信息的 json。所以,我想传递一个类型的对象:
public class SomeRequest
{
public RequestReason Reason { get; set; }
}
public enum RequestReason
{
New,
Dublicate
}
我创建了一个 mdel,配置了一个动作:
var action = modelBuilder.Entity<Member>().Action("SomeRequest");
action.Parameter<SomeRequest>("Info");
action.Returns<HttpResponseMessage>();
var model = modelBuilder.GetEdmModel();
configuration.EnableOData(model);
在控制器中有代码:
[HttpPost]
public HttpResponseMessage RequestIDCard(int key, [FromBody]ODataActionParameters param)
{
object value;
param.TryGetValue("Info", out value);
///!!!!
}
并期望具有真实类型 SomeRequest 的价值,转换类型并处理它...然后我发出带有标头的 POST 请求
内容类型:application/json;json=light; charset=utf-8 接受:application/json;odata=light
与身体
{“信息”:{“原因”:1}}
但是我得到了“Newtonsoft.Json.Linq.JObject”类型的对象,并且确定它不能被投射!但是,如果我将对象类型更改为 int,一切正常 :) 是 WebAPI OData 的错误还是我做错了什么?