等しくする必要がある2つのフィールド(パスワードとパスワードの確認)を持つフォームがあります。これを確認するためにクラス属性を作成しましたが、サーバー側ではうまく機能します。クライアント側では何もしません。ValidationSummaryにメッセージを表示する必要があります(「パスワードの繰り返し」は「パスワード」と同じである必要があります)。
これらのフィールドをチェックする最も簡単な方法は、ルールを手動でwindow.mvcClientValidationMetadataに追加することであることに気付きました。私はそれをやろうとしていましたが、何もうまくいきませんでした。
私のコード:
<% using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post}))
{ %>
<%= Html.ValidationSummary() %>
<div>
<%= Html.ValidationMessageFor(m => m.Email)%>
<%= Html.LabelFor(m => m.Email)%>
</div>
<div>
<%= Html.TextBoxFor(m => m.Email)%>
<% Html.ValidateFor(m => m.Email);%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.Password)%>
<%= Html.LabelFor(m => m.PasswordModel.Password)%>
</div>
<div>
<%= Html.PasswordFor(m => m.PasswordModel.Password)%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.PasswordRepeated)%>
<%= Html.LabelFor(m => m.PasswordModel.PasswordRepeated)%>
</div>
<div>
<%= Html.PasswordFor(m => m.PasswordModel.PasswordRepeated)%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.PasswordRepeated)%>
<%= Html.LabelFor(m => m.PasswordModel.PasswordRepeated, true)%>
</div>
<% } %>
Html.EnableClientValidation
このフォームが生成される前にメソッドが実行されます。
以下に私の問題の解決策を示します。