尝试使用OData webAPI并使用param调用操作,序列化为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请求Content-Type:application / json; json = light; charset = utf-8接受: 应用/ JSON;的OData =光
和身体
{ “信息”:{ “理”:1}}
但是我得到了类型为“Newtonsoft.Json.Linq.JObject”的对象并且确定无法进行渲染! 但如果我将对象类型更改为int,一切正常:) 这是WebAPI OData的错误还是我做错了什么?
答案 0 :(得分:0)
您的使用情况有些不对,
action.Returns&LT; HttpResponseMessage&gt;没用。这会将HttpResponseMessage映射为服务的EDM模型中的复杂类型。我不确定映射会是什么样子。通常,您希望在正在构建的EDM模型中公开模型中的类型。您应该从模型中选择更具体的类型,更像是
action.Returns&LT; IDCard&gt;();