2016-07-20 17 views
4

Gibt es eine einfache Möglichkeit, die gesamte Seite (nicht nur die Teilansicht) auf die Anmeldeseite umzuleiten, nachdem die Sitzung abgelaufen ist?Teilansicht zur Anmeldeseite umleiten, wenn Sitzung abläuft

Ich habe die folgenden Lösungen ausprobiert, aber es nicht bekommen zu arbeiten:

Mein Problem ist, dass die Teilansicht Umleitungen auf die Anmelde-Seite und nicht die ganze Seite (dasselbe Problem wie in den Links).

-Controller

 [HttpPost] 
     public PartialViewResult LogPartialView(string a, int? b, string c, string d, int? e, string f) 
     { 
      //If the user is "Admin" -> display Logs for all customers. 
      if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin")) 
      { 
       if (Session["myID"] == null) 
       { 
        ExpireSession(); 
       } 
      //Some code 

     return PartialView("LogPartialLayout", model); 
     } 

Ich wollte Redirect zurückzukehren ("~ /"), wenn myID null ist, aber es funktioniert nicht, da es eine Teilansicht erwartet.

Fehlermeldung: Kann nicht implizit Typ 'System.Web.Mvc.RedirectResult' auf 'System.Web.Mvc.PartialViewResult' konvertieren

public void ExpireSession() 
    { 
     Session.Abandon(); 
     WebSecurity.Logout(); 
     Response.Redirect("~/"); 

    } 

Picture of the view

+0

Ändern Sie die Signatur Ihrer Methode zu: 'public Action LogPartialView (...)' – haim770

+0

@ haim770 habe ich, wenn session = null -> Redirect ("~ /") Aber es immer noch in der Teilansicht umleitet. –

+0

@ haim770 .. Ich habe vergessen zu erwähnen, dass ich zu öffentlichen ActionResult geändert habe, aber ohne Erfolg. Weiterleitung innerhalb der PartialView. –

Antwort

2

ich auf @EmilChirambattu Antwort auf bauen werde.

[HttpPost] 
public ActionResult LogPartialView(string a, int? b, string c, string d, int? e, string f) 
{ 
    // You should check the session before anything else. 
    if (Session["myID"] == null) 
    { 
     return ExpireSession(); 
    } 

    //If the user is "Admin" -> display Logs for all customers. 
    if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin")) 
    { 
     //Some code 
    } 

    return PartialView("LogPartialLayout", model); 
} 

public void ExpireSession() 
{ 
    Session.Abandon(); 
    WebSecurity.Logout(); 
    Response.Redirect("RedirectToLogin"); 
} 

public ActionResult RedirectToLogin() 
{ 
    return PartialView("_RedirectToLogin"); 
} 

_RedirectToLogin Ansicht

<script> 
    window.location = '@Url.Action("Index", "")'; 
</script> 

Dies sollten Sie auf die Basis URL der Seite (höchstwahrscheinlich Ihre Login-Seite) umleiten.

2

Web Config

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/RedirectToLogin" timeout="2880" /> 
</authentication> 

Konto-Controller

public ActionResult RedirectToLogin() 
{ 
    return PartialView("_RedirectToLogin"); 
} 

_RedirectToLogin Ansicht

<script> 
    window.location = '@Url.Action("Login", "Account")'; 
</script> 

so etwas, die URLs entsprechend

ändern
Verwandte Themen