首页 > 解决方案 > 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)

日期始终无效,即使日期在范围内。

在此处输入图像描述


标签: c#asp.net-mvcvalidationdata-annotations

解决方案


你 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 用于用户界面


推荐阅读