ログインが成功した場合にホームページを開くjavascriptリダイレクトがログオンコントローラーにあります:return JavaScript( "window.top.location ='" + returnUrl + "';")
私のログオンコントローラーは、Ajax.BeginForm内のsumbitによって部分ビューとして呼び出されます。
開発中(vs2010ではF5)、ソリューションは完全に機能しますが、公開されたバージョン(サーバーにアップロードしたもの)は完全に新しいビューを再作成するのではなく、targetidのdivを更新します。
私の部分ビューコード
@model Web.Models.LogOnModel
<div id="LogBox2">
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "LogBox2", }))
{
<fieldset>...'All textbox capturing data here
<input type="submit" value="LogOn" />
</fieldset>
@Html.ValidationSummary(true, "Login was unsuccessful")
}
</div>
私のコントローラーコード
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return JavaScript("location.href ='" + 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())
{
// If an ajax request was made return only the validation errors
// instead of the whole page
return PartialView("LogIn2");
}
else
{
return View();
}
}
デバッグ(F5)が機能する理由がよくわかりません。あなたは?よろしくお願いします