【问题标题】:OData - How to convert PageResult<T> to IHttpActionResultOData - 如何将 PageResult<T> 转换为 IHttpActionResult
【发布时间】:2015-12-16 06:06:51
【问题描述】:

我的控制器上有一个PageResult&lt;T&gt; GetXXX(...) 方法,我在其中获取数据并将其返回为PageResult&lt;T&gt;,现在当出现任何错误或没有内容时,我想将响应返回为@987654323 @和HttpStatusCode.NoContent

如果我将方法的返回类型保持为IHttpActionResult,那么我会收到一条错误消息:

'无法将 EDM 模型创建为控制器 'YYY' 上的操作 'GetXXX' 有一个返回类型 'System.Web.Http.IHttpActionResult' 不 实现 IEnumerable'

如果我不使用 PageResult 并简单地返回我的所有数据,那么我不会收到错误。

我必须使用PageResult&lt;T&gt;,因为我正在管理自己的分页。

public IHttpActionResult GetXXX(...)
{
     PageResult<XXX> finalResult = new PageResult<XXX>(mydata, new Uri(...), Count);
     return Ok<IEnumerable<XXX>>(finalResult.Items);
}

【问题讨论】:

  • 你应该返回空数据,并在客户端进行验证
  • 好的,但我仍然需要处理内部服务器错误,因为它正在打印堆栈跟踪
  • 您的服务器应该对页面没有当前元素的情况进行验证

标签: c# odata


【解决方案1】:

你在看这个吗,

  PageResult<T> yourPageResult = new PageResult<T>(...);
  return Ok(yourPageResult)

【讨论】:

  • 它不起作用,Ok(yourPageResult.Items) 也不起作用
  • 用我的代码更新了问题,和你发布的差不多
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2019-06-13
相关资源
最近更新 更多