我想分享我如何在 .NET Core MVC 控制器中使用 DateTime 参数。我用它在我的解决方案中创建了日期范围过滤器功能。
不正确
[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");
}
Run Code Online (Sandbox Code Playgroud)
更好的方法:
[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");
}
Run Code Online (Sandbox Code Playgroud)
关键是路由注释中的 :datetime 约束。这指示 .NET 强制执行 DateTime 并针对无效参数值自动返回 404 响应。这比在代码中检查输入和处理错误响应要干净得多。
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |