我想分享我如何在 .NET Core MVC Controller 中使用 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");
}
最佳答案
更好的方法:
[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");
}
关键是路由注释中的 :datetime 约束。这指示 .NET 强制执行 DateTime 并针对无效参数值自动返回 404 响应。这比在代码中检查输入和处理错误响应要干净得多。
关于asp.net-core-mvc - ASP.Net Core MVC 日期时间参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210457/