【发布时间】:2016-11-24 09:24:31
【问题描述】:
首先,我有这个问题......
WebApi OData v4 ComlexType cannot have an EntityType
...想到“这很垃圾,但也许我可以解决它”,我想我可以尝试告诉 OData 我只是返回一个字符串,然后 Json 自己序列化对象...
这是我想做的事
var acptBatch = Builder.EntityType<ProposedOffer>().Collection.Action("AcceptBatch");
acptBatch.Parameter<bool>("asSingleTransaction");
acptBatch.Parameter<string>("perspective");
acptBatch.ReturnsCollection<ValidationResult<ProposedOffer>>();
[HttpPost]
[ODataRoute("AcceptBatch({asSingleTransaction},{perspective})")]
public async Task<IHttpActionResult> AcceptBatch([FromUri]bool asSingleTransaction, [FromUri]string perspective, [FromBody]ICollection<int> offerIds)
{
try
{
var p = (Perspective)Enum.Parse(typeof(Perspective), perspective);
var result = await Service.AcceptOffers(asSingleTransaction, offerIds, p);
return Ok(result);
}
catch (Exception ex)
{
return await Failed(ex);
}
}
与它战斗了一个小时左右,我已经走到了这一步......
var acptBatch = Builder.EntityType<ProposedOffer>().Collection.Action("AcceptBatch");
acptBatch.Parameter<bool>("asSingleTransaction");
acptBatch.Parameter<string>("perspective");
[HttpPost]
[ODataRoute("AcceptBatch({asSingleTransaction},{perspective})")]
[Route("ProposedOffer/AcceptBatch({asSingleTransaction},{perspective})")]
public async Task<IHttpActionResult> AcceptBatch([FromUri]bool asSingleTransaction, [FromUri]string perspective)
{
try
{
var offerIds = JsonConvert.DeserializeObject<ICollection<int>>(await Request.Content.ReadAsStringAsync());
var p = (Perspective)Enum.Parse(typeof(Perspective), perspective);
var result = await Service.AcceptOffers(asSingleTransaction, offerIds, p);
return Ok();
}
catch (Exception ex)
{
return await Failed(ex);
}
}
有人知道如何将结果返回到客户端上调用基于 javascript 的代码吗? 此时,在 Ok() 中放入任何内容都会导致框架返回 406,无论我在初始化模型时如何声明它。
【问题讨论】:
标签: c# asp.net-web-api odata