asp.net - 使用正则表达式进行asp时间跨度验证
问题描述
在我的一个模型中,我使用以下属性:
[Required(ErrorMessage = "Please enter the duration of the service")]
[RegularExpression(@"^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$", ErrorMessage = "Use format HH:MM only")]
public TimeSpan Duration { get; set; }
我使用这个正则表达式来确保持续时间的格式为 HH:mm。
每次我尝试以该格式插入值时,都会收到错误消息“仅使用格式 HH:MM”。删除正则表达式注释后,我成功保存了 HH:MM(格式字符串,但我意识到它以另一种格式保存(HH:MM:SS)。我尝试将正则表达式更改为以下注释:
[RegularExpression(@"^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$", ErrorMessage = "Use format HH:MM:SS only")]
现在我可以以这种格式保存持续时间。似乎当我尝试保存 HH:MM 格式时,它会自动转换为 HH:MM:SS,这就是它在注释检查中失败的原因。
我该如何处理这个问题?我不想输入某些流程的秒数,只输入小时和分钟。
解决方案
RegularExpressionAttribute调用 的ToString ()方法TimeSpan
,这会产生您描述的格式(即包括秒数)。您可以只创建一个ValidationAttribute
基于的自定义RegularExpressionAttribute
,在@"hh\:mm"
调用.ToString
TimeSpan
推荐阅读
- css - 如何删除每个反应视图底部的空格?
- docker - 如何使用常规方式运行基于 docker 的 mssql-tools
- python - 我正在用 python 构建一个 CNN,但是在训练它时它会停止训练并给我一个警告
- heroku - Heroku:网站未显示
- ruby-on-rails - Rails 6 如何链接 assets/config/manifest.js 中的子文件夹
- saml-2.0 - WebSSO 配置文件的 SAML 身份验证请求不得指定任何 SubjectConfirmations
- spring-boot - Swagger UI 一直无法推断弹出窗口
- python - 未找到带有参数“(”,)”的“idnome”的反向操作。尝试了 1 种模式:['viewInscricao/(?P
[0-9]+)/$'] - apollo-server - 直接从网关调用实现服务
- google-app-engine - 部署node js app app engine google cloud "Forbidden" (403)