【问题标题】:MVC 4 (RC) Web Api OData not sorting properlyMVC 4 (RC) Web Api OData 没有正确排序
【发布时间】:2012-06-18 19:30:00
【问题描述】:

最近更新到MVC4的RC。它解决了很多问题,尤其是在日期序列化方面。但是,我遇到了另一个问题。我用于分页/排序等的 OData 排序和选项现在不起作用。我没有更改代码中的任何内容,并且在发行说明中找不到任何提及功能更改的内容。我的代码在下面,知道我做错了什么吗?

注意:我使用的是AttributeRouting extension,不确定这是否导致问题。


Web API 类/方法

[RouteArea("v1")]
[RoutePrefix("locations")]
public class LocationsController : ApiController
{
    // Data Repository
    static readonly IRepository<Location> Repo = new LocationRepository();

    #region CRUD

    [GET("")]
    public IQueryable<Location> Get()
    {
        return Repo.All;
    }
}

jQuery 客户端调用

$.ajax({
        url: '/v1/locations?$orderby=Name asc',
        success: function (data) {
            resultFunction(data);
        }
});

JSON 响应

[
    {
        "LocationId":"aca3e1fe-8192-4bb8-b233-1d6fe6b69ba4",
        "Name":"Triangle North"
    },
    {
        "LocationId":"0c99a267-2093-401a-9466-70788500630b",
        "Name":"Triangle West"
    },
    {
        "LocationId":"168e3755-b61e-41d6-99f3-941d738ab321",
        "Name":"Triangle East"
    },
    {
        "LocationId":"82e7a547-a4eb-4233-bdb4-cd8c5b369af8",
        "Name":"Triangle South",
    }
]

【问题讨论】:

    标签: json jquery asp.net-mvc-4 odata asp.net-web-api


    【解决方案1】:

    事实证明,在此 MSFT 上进行搜索的过程中,决定要求指定一个显式属性,以便 OData 内容自动流动:

    (...)您必须在方法上添加[Queryable] 属性 (docs)。

    [Queryable]
    public IQueryable<Product> GetAllProducts()
    {
        return repository.GetAll().AsQueryable();
    }
    

    http://forums.asp.net/t/1809900.aspx/1?Web+API+OData+in+RC

    哇!

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2014-09-07
      相关资源
      最近更新 更多