Html.ValidationMessageFor()方法的行为不一致

时间:2012-03-04 00:24:34

标签: asp.net-mvc asp.net-mvc-3

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

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

此消息可能来自的任何想法&如何解决?

更新 添加了型号代码......基本上我使用的是CSLA的精简版。业务规则在创建时添加到类中,并且触发一次,调用适当的方法。基本上,'rule.ErrorMessage'是ValidationMessageFor列出错误时应该显示的内容。它适用于所有其他属性,除了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));

1 个答案:

答案 0 :(得分:0)

我需要做的就是将this post中提到的属性设置为可为空。