2017-10-19 18 views
0

に私がサインアウトして、コントローラ内の別のページにリダイレクトするには、次のコードを持っている:サインアウト()asp.net MVC 4

... 
<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> 
... 

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

を私は、次の「マスターページ」を持っています

問題は次のとおりです。ログアウトアクションが呼び出されると、インデックスページにリダイレクトされますが、ヘッダーとフッターは変更されません。「サインアウト」を再度クリックするか、ページを更新してから動作させる必要があります。

2回クリックしたり、ページを更新したりすることなく、どのように動作させることができますか?

+0

[ログアウトMVC 4でセッションをクリア](https://stackoverflow.com/questions/27738174/clear-session-on-logout-mvc-4)の可能な複製 – JuanR

答えて

0

私はこれを変更し、それを固定

  @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")とします。これで

  @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> 
      } 

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