2

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

注意:我正在使用AttributeRouting 扩展,不确定这是否导致问题。


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",
    }
]
4

1 回答 1

5

结果在此 MSFT 上搜索的过程中,决定要求指定一个显式属性,以便 OData 内容自动流动:

(...)您必须在方法( docs)上放置一个[Queryable]属性。

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

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

嗬!

于 2012-06-15T17:34:39.523 回答