2017-10-19 115 views
0

我有以下代碼註銷並重定向到另一個頁面控制器:SignOut()在asp.net MVC 4

... 
public ActionResult Logout(){ 
    FormsAuthentication.SignOut(); 
    return Redirect("Index"); 
} 
... 

我有以下的「母版頁」:

... 
<body> 
    <header> 
     <div style="background-color:deepskyblue; width:100%; height:20px"> 
      @if(User.Identity.IsAuthenticated){ 
       <a style="position:relative; float:right; right:15px" href="@Url.Action("Logout", "Home", null)">Logout</a> 
      } 
      else{ 
       <a style="position: relative; float: right; right: 15px" href="@Url.Action("Login", "Home", null)">Login</a> 
      } 
     </div> 
    </header> 
    @RenderBody() 
    <footer> 
     <div style="position:relative; background-color:lightslategrey; width:100%; height:20px"> 
      @if(User.Identity.IsAuthenticated){ 
       <a style="position: relative; float: left; left: 15px" href="@Url.Action("Index", "Home", null)">Go back</a> 
      } 
     </div> 
    </footer> 
</body> 
... 

問題是:當註銷操作被調用時,它會重定向到索引頁面,但頁眉和頁腳不會更改,我必須再次單擊「註銷」或刷新頁面,然後才能正常工作。

它如何工作,而不必點擊兩次或刷新頁面?

+0

[Clearout MVC 4上清除會話]的可能重複(https://stackoverflow.com/questions/27738174/clear-session-on-logout-mvc-4) – JuanR

回答

0

我固定它改變這一點:

  @if(User.Identity.IsAuthenticated){ 
       <a style="position:relative; float:right; right:15px" href="@Url.Action("Logout", "Home", null)">Logout</a> 
      } 
      else{ 
       <a style="position: relative; float: right; right: 15px" href="@Url.Action("Login", "Home", null)">Login</a> 
      } 

與此:

  @if(User.Identity.IsAuthenticated){ 
       @Html.ActionLink("Logout", "Logout", "MyAccount", null, new{@style="position:relative; float:right; right:15px"}) 
      } 
      else{ 
       @Html.ActionLink("Login", "Login", "MyAccount", null, new{@style="position: relative; float: right; right: 15px"}) 
      } 

謝謝反正你的答案。

1

爲什麼在這裏使用Redirect()RedirectToAction()是在應用程序上下文中發出302重定向的首選方式。它遵守你的路由。我想那Redirect("Index")不會總是作爲Redirect("/Controller/Index")將工作。

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