c# - C# 模型验证将有效日期范围显示为无效
问题描述
我的模型有一个这样的日期字段:
[Display(Name = "Date of Birth")]
[Required(AllowEmptyStrings = false, ErrorMessage = "This field is required.")]
[Range(typeof(DateTime), "1/1/2000", "1/1/2010", ErrorMessage = "Date is out of Range")]
public string DOB { get; set; }
在我看来,我有这个领域:
@Html.TextBoxFor(m => m.DOB, new { @class = "form-control", @id = "dob", type = "Date" })
@Html.ValidationMessageFor(m => m.DOB)
日期始终无效,即使日期在范围内。
解决方案
你 DOB 是一个字符串类型,但你试图验证 DateTime 类型。您可以制作自定义验证器,也可以尝试制作类似这样的工作
public string DOB
{
get { return DOBDateTime.ToString("dd/MM/yyyy HH:mm:ss"); }
set { DobDateTime= DateTime.Parse(value); }
}
[NotMapped]
[Display(Name = "Date of Birth")]
[Required(ErrorMessage = "This field is required.")]
[Range(typeof(DateTime), "1/1/2000", "1/1/2010", ErrorMessage = "Date is out of Range")]
[DataType(DataType.Date)]
public DateTime DOBDateTime { get; set; }
在这种情况下,您必须仅将 DOBDateTime 用于用户界面
推荐阅读
- typescript - 如何可靠地检测 TSLint 中的 TypeScript SyntaxKind?
- jquery - vue项目中如何安装jquery
- graph - Gremlin 获取存在连接它们的双向边的顶点
- javascript - 一个按钮运行一个功能,第二个按钮运行不同的功能,但前提是第一个功能运行
- amazon-web-services - AWS Step Functions 是否具有超时功能?
- javascript - React 中的 CSS 模块 - 共享可重用代码的解决方案
- python - 循环调用彼此的函数
- angular - Angular Universal - TransferState ( )注入的脚本的几个实例
- excel - 命名范围的公式和问题
- javascript - 如果没有参数传递给第一个返回的函数,compose 函数的 reduce 函数的初始值是多少?