我有一个web api控制器,但我需要用odata url格式调用一些动作。 这是我的api控制器
public class ticketsController : ApiController
{
[EnableQuery]
public HttpResponseMessage Get(ODataQueryOptions<ticket> queryOptions)
{
List<ticket> tL = new List<ticket>();
tL.Add(new ticket() { id = 1 });
tL.Add(new ticket() { id = 2 });
tL.Add(new ticket() { id = 3 });
return Request.CreateResponse(HttpStatusCode.OK, tL.AsQueryable());
return tL.AsQueryable();
}
}
我的获取操作回复为
<ArrayOfticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/TestODataApi.Models">
<ticket>
<id>1</id>
<name i:nil="true"/>
<surname i:nil="true"/>
</ticket>
<ticket>
<id>2</id>
<name i:nil="true"/>
<surname i:nil="true"/>
</ticket>
<ticket>
<id>3</id>
<name i:nil="true"/>
<surname i:nil="true"/>
</ticket>
</ArrayOfticket>
但是我需要一个OData响应,比如这个
{
"@odata.context":"http://127.0.0.1/testodataapi/api/$metadata#tickets","value":[
{
"id":1,"name":null,"surname":null
},{
"id":2,"name":null,"surname":null
},{
"id":3,"name":null,"surname":null
}
]
}
是否有可能改变对odata响应的响应? 我是否需要一个消息处理程序来拦截调用? 非常感谢