尝试使用OData WebAPI,并调用一个带有参数的操作,将其序列化为没有元信息的JSON。
因此,我想传递一个类型的对象:
public class SomeRequest
{
public RequestReason Reason { get; set; }
}
public enum RequestReason
{
New,
Dublicate
}
我已创建了一个模型,并配置了一个操作:
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 Accept: application/json;odata=light
以及以下正文:
{"Info":{"Reason":1}}
但是,我得到了一个无法转换的"Newtonsoft.Json.Linq.JObject"类型的对象!如果我将对象类型更改为int,则一切都可以正常工作:)这是WebAPI OData的错误还是我的问题?