ValidationMessageFor的更改验证规则

时间:2011-06-26 04:24:09

标签: c# asp.net-mvc razor

在我的注册视图中,我有:

<div>
    @Html.ValidationMessageFor(m => m.Password)
</div>

如果我使用foobar100之类的密码,则验证失败,但错误消息未提供失败的正确原因。即The password provided is invalid. Please enter a valid password value.仅当我执行foob@r100之类的操作时才会有效。

有没有办法降低验证规则的严格性?或者至少更改验证错误消息?

更新

我正在检查的对象的数据验证属性是:

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

没有提及要求@符号。

3 个答案:

答案 0 :(得分:1)

检查您正在检查的任何对象的Password属性上的数据验证属性。

答案 1 :(得分:1)

您可以在属性上向DataAnnotations属性添加消息,如下所示:

[RegularExpression(@"/tags/[^\ ]+", ErrorMessage = "Url must start with /tags/ and must not contain spaces")]
public string Url { get; set; }

ValidationMessageFor助手将使用这些来输出正确的消息。

答案 2 :(得分:0)

降低验证严格性。例如。不需要字母数字字符。您需要更改MembershipProvider属性。这可以通过web.config文件按照http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.minrequirednonalphanumericcharacters.aspx完成。

   <membership>
          <providers>
              <clear/>
              <add name="AspNetSqlMembershipProvider"
                type="System.Web.Security.SqlMembershipProvider"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="false"
                requiresUniqueEmail="false"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="6"
                minRequiredNonalphanumericCharacters="0"
                passwordAttemptWindow="10"
                applicationName="/"/>
          </providers>
      </membership>

然后,您可以通过Danny Tuppeny的答案更好地控制严格程度。