Asp.net mvc 与Html.ValidationMessageFor()方法的行为不一致

Asp.net mvc 与Html.ValidationMessageFor()方法的行为不一致,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我正在使用Html.ValidationMessageFor()方法在表单上显示验证消息。对于大多数表单字段,我都会收到相应的错误消息,除了几个字段。一个是“出生日期”字段,它是表单上的文本框,另一个是“州”字段,它是美国所有州的下拉列表。对于这两个字段,我得到了“DateOfBirth字段是必需的”和“State字段是必需的” 我启动了reflector并查看了Html.ValidationMessageFor()静态方法中的代码,这些方法似乎没有添加此消息 这条信息可能来自何处?如何修复 更

我正在使用Html.ValidationMessageFor()方法在表单上显示验证消息。对于大多数表单字段,我都会收到相应的错误消息,除了几个字段。一个是“出生日期”字段,它是表单上的文本框,另一个是“州”字段,它是美国所有州的下拉列表。对于这两个字段,我得到了“DateOfBirth字段是必需的”和“State字段是必需的”

我启动了reflector并查看了Html.ValidationMessageFor()静态方法中的代码,这些方法似乎没有添加此消息

这条信息可能来自何处?如何修复

更新 添加了模型代码。。。基本上,我使用的是精简版的CSLA。业务规则在创建类时添加到该类中,并在调用相应方法时触发一次。基本上,“rule.ErrorMessage”是ValidationMessageFor列出错误时应该显示的内容。它适用于除DateofBirth和State属性之外的所有其他属性

型号代码

特性:

业务规则:

this.AddValidation(新数据验证(“DateOfBirth”,“DateOfBirthRequired”,
委托(数据验证规则)
{
rule.ErrorMessage=“必需”;
返回((DateOfBirth>=新日期时间(1900,1,1))&&(DateOfBirth
我所需要做的就是将属性设置为可空,如中所述。

您的模型是什么样子的?你能提供源代码吗?从模型中添加了一些源代码。
public Guid UserId { get; set; }
public Guid PatientId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone1 { get; set; }
public string Phone2 { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public States State { get; set; }
public string Zip { get; set; }
public DateTime DateOfBirth { get; set; }
public string EmergencyName { get; set; }
public string EmergencyPhone { get; set; }
public string EmergencyRelation { get; set; }
this.AddValidation(new DataValidation("DateOfBirth", "DateOfBirthRequired",
   delegate(DataValidation rule)
   {
      rule.ErrorMessage = "required";
      return ((DateOfBirth >= new DateTime(1900, 1, 1)) && (DateOfBirth < DateTime.Today));
   }, DataAction.Update | DataAction.Insert));
this.AddValidation(new DataValidation("State", "StateRequired",
   delegate(DataValidation rule)
   {
      rule.ErrorMessage = "required";
      return (State != States.Unknown);
   }, DataAction.Insert | DataAction.Update));