MVC3 アプリケーションのポップアップ ログイン ボックスに JQuery UI ダイアログを使用しています。現在、ユーザーをログインさせ、親ページの「ログインステータス」divを更新し、失敗した場合はポップアップに検証エラーを表示するようにしています。ただし、ログインフォームでキャンセルボタンを押すと、ポップアップが閉じず、ログインに成功しても閉じません。誰かが私のコードに明らかに問題があるのを見ることができますか? どうもありがとう。
ログインボタンのクリックイベント:
$('a#login').click(function (e) {
var url = '@Url.Action("LogOnPartial", "Account")';
var dialog = $('<div id="ModalDialog" style="display:none"></div>').appendTo('body');
$.get('@Url.Action("LogOnPartial", "Account", null)', function (response) {
dialog.html(response)
dialog.dialog({
bgiframe: true,
modal: true,
width: 500,
closeOnEscape: false,
buttons: {
"Submit": function () {
$("#refresh").submit();
},
"Cancel": function () {
$("#ModalDialog").dialog("close");
// EDIT - This part now working - solution below:
//dialog.dialog("close");
}
}
});
});
});
ログインフォーム部分図
@using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions { OnSuccess = "success", UpdateTargetId = "loginDialog" }, new { @id = "refresh"}))
{
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<a href="@Url.Content("~/Account/ForgotPassword")">Forgot Password?</a>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
<input type="submit" value="Log On" style="display:none" />
}
</div>
<script type="text/javascript">
function success(result) {
if (result.success) {
$('#loginStatus').load("@Url.Content("~/Account/LogOnStatus")");
$(this).dialog('destroy').remove();
}
}
</script>
必要に応じて、コントローラーのコードも投稿できます。基本的に、成功したjson success = true
場合は を返し、そうでない場合は検証エラーのある部分ビューを返します。