Datetime Odata类型转换URL

Datetime Odata类型转换URL,datetime,odata,breeze,Datetime,Odata,Breeze,我对odata还不熟悉,现在正在尝试一些事情。我想提供一个带有2个DateTime类型参数的方法。我试图通过url发送请求,但没有成功。有人能告诉我我做错了什么吗 [HttpGet] public IQueryable<TestData> TestMethod([FromUri] DateTime dateFrom, [FromUri] DateTime dateTo) { ... } [HttpGet] 公共IQueryable测试方法([FromUri]Da

我对odata还不熟悉,现在正在尝试一些事情。我想提供一个带有2个DateTime类型参数的方法。我试图通过url发送请求,但没有成功。有人能告诉我我做错了什么吗

 [HttpGet]
 public IQueryable<TestData> TestMethod([FromUri]  DateTime dateFrom, [FromUri]  DateTime dateTo)
 {
    ...
 }
[HttpGet]
公共IQueryable测试方法([FromUri]DateTime dateFrom,[FromUri]DateTime dateTo)
{
...
}

我的请求:data/ManagementReporting/TestMethod?dateFrom=datetime'2014-02-01'和dateTo=datetime'2014-04-01'

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


数据/管理报告/测试方法(dataFrom='2014-02-01',dataTo='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");
ODataConventionModelBuilder=new ODataConventionModelBuilder();
var functionConfiguration=builder.Function(“TestMethod”);
functionConfiguration.Parameter(“dateFrom”);
functionConfiguration.Parameter(“dateTo”);
然后,尝试Maya所说的查询。您还可以参考以查找有关如何在OData中调用函数的更多信息。
否则,如果你想了解更多关于odata的信息,这是一个很棒的网站

如果您使用默认的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);
    }
    
    [HttpGet]
    public IQueryable EmployeesFilteredByCountry和birthDate(日期时间出生日期,字符串国家){
    返回ContextProvider.Context.Employees.Where(
    emp=>emp.BirthDate>=出生日期和emp.Country==国家);
    }