次の部分的なビューがあります (このフォーラムでは単純にするために、一部の書式を削除しました)。私のフォームタグは親ページにあり、ダイアログの項目はそのフォームの一部です。これは、厳密に型指定された部分ビューです。モデルで password フィールドと confirmPassword フィールドを [必須] として定義しました。
@Html.LabelFor(m => m.password)
<a href="#" onclick="openResetPasswordDialog();">Reset Password</a>
<div id="dialogResetPassword" title="Reset Password">
<p>Reset password for user: @Model.userId</p>
@Html.LabelFor(m => m.password)
@Html.PasswordFor(m => m.password)
@Html.ValidationMessageFor(m => m.password)
<div class="rowEnd"></div>
@Html.LabelFor(m => m.confirmPassword)
@Html.PasswordFor(m => m.confirmPassword)
@Html.ValidationMessageFor(m => m.confirmPassword)
<div class="rowEnd"></div>
</div>
ダイアログの初期化用に次の JavaScript があります。
function initializeResetPasswordDialog() {
$(resetPasswordDialogId).dialog(
{
autoOpen: false,
autoResize: true,
buttons: {
Ok: function () {
if (!($('#userForm').valid())) {
return false;
}
//more code goes here ...
closeResetPasswordDialog();
},
Cancel: function () {
closeResetPasswordDialog();
}
}
});
}
私のダイアログは初期化され、正常に開いたり閉じたりしますが、ダイアログ内の項目の有効性を確認しようとすると、常に「有効」になります。
フォーム全体を送信するのではなく、[OK] ボタンのパスワードとパスワードの確認フィールドを送信するだけで、検証も起動します。これを行う方法に関する提案はありますか?