私は、(jquery simplemodalを使用して)モーダルダイアログにログインビューを表示しています。ユーザーがログインに失敗すると、正常に動作します。エラーはモーダルに戻ります。問題は、ユーザーが正常にログインしたときです - ページがリダイレクトされてモーダルが消えてしまいますが、モーダルがページ全体で更新されるようになりました:(ASP.NET MVCログインモーダルの問題 - リダイレクトがモーダルになりますか?
モーダルが正しく見えるようにもしログインのソースがAjaxならAccountControllerを見てください。もしそうなら、部分的なビューを返します(モーダルで表示する)。そうでなければ、フル・ビューを返します(ユーザがウェブサイトの外部からページにアクセスしようとする場合)私のログオンユーザーコントロール(Site.Masterで1つのザッツ)で
public ActionResult LogOn()
{
if (Request.IsAjaxRequest())
{
return PartialView("_LogOn");
}
return View();
}
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
if (Request.IsAjaxRequest())
{
return PartialView("_LogOn");
}
return View();
}
ログインリンクが
をクリックされたとき、私はJavaScriptからログオンするためのスクリプトを追加しました部分ビュー(つまり、Ajaxの呼び出しで返される)次のようになりますが:
<% using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions{UpdateTargetId = "logonForm"})) { %>
<div id="logonForm">
<%: Html.ValidationSummary(true, "Login was unsuccessful. Please review and try again.") %>
<p>Please enter your username and password.
</p>
<p>
<input id="submit" type="submit" value="Log In" />
</p>
</div>
<%}%>
だから、問題はAjaxOptions UpdateTargetIdがlogonFormであるということである - ですユーザーがログインに失敗したときに何をしたいのですか?login.iが正常にページを更新したいとき - しかし、私がこれをしない限り、AccountController.LogOnのajaxログインと通常ログインを区別できません:P
何か案は?これが意味をなさないことを願っています - ありがとう
そのようなIMはどちらかの方法でねじ込まれます。