Odata类型转换网址



我是odata的新手,目前正在尝试一些事情。我想提供一个带有 2 个日期时间类型参数的方法。我尝试通过 url 发送请求,但它不起作用。有人可以给我任何建议我做错了什么吗?

 [HttpGet]
 public IQueryable<TestData> TestMethod([FromUri]  DateTime dateFrom, [FromUri]  DateTime dateTo)
 {
    ...
 }

我的请求:数据/管理报告/测试方法?dateFrom=datetime'2014-02-01'&dateTo=datetime'2014-04-01'

可以引用http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/creating-an-odata-endpoint在 Webapi 中生成 OData 终结点。在您的情况下,首先,您可以通过以下方式将TestMethod定义为 EdmModel 中的未绑定函数:

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
var functionConfiguration = builder.Function("TestMethod");
functionConfiguration.Parameter<DateTime>("dateFrom");
functionConfiguration.Parameter<DateTime>("dateTo");

然后,按照玛雅所说尝试查询。还可以参考 OData 协议来查找有关如何在 OData 中调用函数的详细信息。否则,如果您想了解更多关于 odata 的信息,http://www.odata.org 是一个很棒的网站。

请求是URL是错误的。如果要调用函数并传递参数,请尝试:

data/ManagementReporting/TestMethod(dataFrom='2014-02-01',dataTo='2014-04-01')

如果您使用的是默认的 breeze WebApi/WebApi2 控制器,并且要将任意参数传递给服务器,则可以执行以下操作:

  • 在客户端上

    var q = EntityQuery.from("EmployeesFilteredByCountryAndBirthdate")
        .withParameters({ birthDate: "1/1/1960", country: "USA" });
    em.executeQuery(q).then(function (data) { ... }
    
  • 在服务器上

    [HttpGet]
    public IQueryable<Employee> EmployeesFilteredByCountryAndBirthdate(DateTime birthDate, string country) {
      return ContextProvider.Context.Employees.Where(
        emp => emp.BirthDate >= birthDate && emp.Country == country);
    }
    

相关内容

  • 没有找到相关文章

最新更新