2012-04-13 8 views
1

ログオンが成功した場合、ホームページを開くログオンコントローラにJavaScriptリダイレクトがあります:return JavaScript( "window.top.location = '" + returnUrl + " '; ")パーシャルビューからリダイレクト - 公開はできませんが、開発はOKです

私のログオンコントローラは、Ajax.BeginForm内のサムビットによって部分ビューとして呼び出されます。

開発中(私の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)はOKバリではない公開作品理由を理解しません。あなたは? 事前にお問い合わせ

答えて

1

あなたのシナリオを十分に理解しているかどうかは不明です。私は、あなたの作品がそうするべきであると思っています。フォームがAjaxを介して提出され、 'returnUrl'がnull /無効である場合、 'LogBox2'はアクション 'Home/Index'行の応答で更新されます。return RedirectToAction("Index", "Home");

あなたの意図ログインが成功したものの、その後、一つの解が

return JavaScript("location.href =" + HttpUtility.JavaScriptStringEncode(Url.Action("Index", "Home"), true) + ";"); 
でライン

return RedirectToAction("Index", "Home"); 

を交換することができ、パスに「にreturnurl」または「ホーム/インデックス」のユーザーをリダイレクトすることです

また、jQuery Ajax with ASP.NET MVCを使用して検討することもできます。

関連する問題