2017-02-13 151 views
1

我想分享我在.NET Core MVC控制器中如何使用DateTime参数。我用它在我的解决方案中创建日期范围过滤功能。ASP.Net核心MVC日期时间参数

错误

[HttpGet, Route("dateRange/{start}/{end}")] 
public IActionResult Get(DateTime start, DateTime end) 
{ 
    //invalid values (e.g. /bogus/52) get converted to a valid DateTime value of 1/1/0001 00:00:00.001 
    if (start != DateTime.MinValue && end != DateTime.MinValue) 
    {    
     if (start < end) 
     { 
      return Json(_Repo.GetByDateRange(start, end)); 
     } 
    } 
    return BadRequest("Invalid Date Range"); 
} 

回答

2

更好的方法:

[HttpGet, Route("dateRange/{start:datetime}/{end:datetime}")] 
public IActionResult Get(DateTime start, DateTime end) 
{    
    if (start < end) 
    { 
     return Json(_Repo.GetByDateRange(start, end)); 
    } 
    return BadRequest("Invalid Date Range"); 
} 

的关键是:在路径注释日期时间约束。这指示.NET强制执行DateTime并自动返回一个404 Response作为无效的参数值。这比检查输入和处理代码中的不良响应要干净得多。