asp.net-core-mvc - ASP.Net Core MVC 日期时间参数

标签 asp.net-core-mvc

我想分享我如何在 .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/

相关文章:

azure - 如何以及在何处在网络核心 Web 应用程序中设置 TelemetryClient?

asp.net - Bower ASP.NET Core MVC 缺少 jquery.validate.js 文件

c# - AuthorizationHandler 异常未通过 ExceptionFilter

c# - 如何降低 aspnetcore 中 mvc 管道的日志级别?

asp.net-core - 获取 ASP Core 的 XML 注释输出文件位置

asp.net-core - Entity Framework 7 分组依据

https - 在 Windows 网络服务器上使用公共(public)证书运行/配置自托管控制台应用程序(ASP.net 核心 2.1、Kestrel)时出现问题

c# - 如何在 C# 页面上使用登录管理器和用户管理器 ASP.NET Core MVC

asp.net-core-mvc - 如何在asp net core mvc应用程序中从我的Azure AD B2C获取用户列表?

c# - Identity signIn/PasswordSignIn 返回成功,但@User.Identity.IsAuthenticated 返回 false