Проверка на стороне клиента, не срабатывающая для CompareAttribute DataAnnotation

Я создаю представление, которое сравнивает две строки паролей. Два свойства в одной из моих моделей довольно просты:

    [Required]
    [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
    [StringLength(20, MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New Password")]
    public string NewPassword { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
    [StringLength(20, MinimumLength = 6)]
    [Display(Name = "Confirm Password")]
    [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

Вот мой код представления:

<table class="fieldset center" width="400">
    <tbody>
        <tr>
            <th width="150">
                @Html.LabelFor(m => m.NewPassword)
            </th>
            <td>
                @Html.PasswordFor(m => m.NewPassword, new { @class = "itext3" })
                <br /><br />@Html.ValidationMessageFor(m => m.NewPassword)
            </td>
        </tr>                       
        <tr>
            <th width="150">
                @Html.LabelFor(m => m.ConfirmPassword)
            </th>
            <td>
                @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "itext3" })
                <br /><br />@Html.ValidationMessageFor(m => m.ConfirmPassword)
            </td>
        </tr>
    </tbody>
</table>

Все атрибуты запускают свои сообщения проверки на стороне клиента при тестировании, за исключением CompareAttribute на ConfirmPassword, который не запускается, пока я не нажму сервер. Однако в моем контроллере ModelState.IsValid = false.

Я сравнил то, что я m выполняется с приложением MVC по умолчанию, которое работает правильно. Есть предложения по поиску и устранению неисправностей?

Я использую MVC 3 RTM.

5
задан beaudetious 14 January 2011 в 21:42
поделиться