我正在使用 Web API 从前到后跟进 AngularJS 课程 ASP.net,我们正在尝试使用 ODATA 进行查询,所以我在 WebAPI 的ProductController
中添加了此代码
// GET: api/Products
[EnableQuery()]
public IQueryable<Product> Get()
{
var productRepository = new ProductRepository();
return productRepository.Retrieve().AsQueryable();
}
然后在 ProductController 的 Angular 代码中添加了以下代码:
function ProductListCtrl(productResource) {
var vm = this;
productResource.query({$skip:1, $top:3}, function (data) {
vm.products = data;
})
但是当我尝试运行时,它会给我以下错误:
角度.js:12701 获取 http://localhost:59302//api/products?$skip=1&$top=3 400(错误请求) 可能未处理的拒绝:{"数据":{"消息":"URI 中指定的查询无效。未注册非 OData HTTP 路由。","exceptionMessage":"未注册非 OData HTTP 路由。",.....
也许你没有 odataConfiguration??您的 EDM 配置在哪里?
在你的配置文件中,你需要这样的东西:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Products");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: builder.GetEdmModel());
}
}