2017-09-18 2 views
-1
public static CustomerInfo Customer 
{ 
    get 
    { 
     if (System.Web.HttpContext.Current.Session["CustomerData"] == null) 
     {      
      System.Web.HttpContext.Current.Response.Redirect("~/Account/Login"); 
      return new CustomerInfo(); 
     } 
     else 
     { 
      return (CustomerInfo)System.Web.HttpContext.Current.Session["CustomerData"]; 
     } 
    } 
    set 
    { 
     System.Web.HttpContext.Current.Session["CustomerData"] = value; 
    } 
} 

Chaque fois que HttpContext.Current.Session["CustomerData"] est null, au lieu de rediriger pour vous connecter au contrôleur de compte, il donne exception.routage MVC5 Programmation C#

+5

Un getter de la propriété avec les effets secondaires sont une mauvaise idée. – Amy

+0

Utilisez un [filtre d'action] (https://www.codeproject.com/Articles/1095295/Check-Session-Timeout-by-Using-ActionFilters-in-MV) pour vérifier la session et la redirection. –

+0

Merci Steve pour suggestion d'utiliser le filtre d'action, mais est-il possible de rediriger vers la vue de connexion de getter. – Madhurima

Répondre

-1

Essayez:

if (System.Web.HttpContext.Current.Session["CustomerData"] == null) 
    {      
     Session["CustomerLogin"] = "True"; 
     return new CustomerInfo(); 
    } 
    else 
    { 
     Session["CustomerLogin"] = "False"; 
     return (CustomerInfo)System.Web.HttpContext.Current.Session["CustomerData"]; 
    } 

Ensuite dans votre chèque contrôleur:

if(Convert.ToString(Session["CustomerLogin"]) == "True"){ 
    return RedirectToAction("Login", "Account"); 
} 
+0

Impossible de faire cela dans sa mise en œuvre - Il essaie de le faire dans le getter de sa classe statique - qui renvoie 'CustomerInfo' – Alex

+0

Oh oui, vous avez raison. Eh bien, il doit vérifier ce que renvoie CustomerInfo et rediriger en conséquence. – Laiman

+0

Salut Laiman merci pour la réponse. mais cette méthode statique publique est dans la classe publique CustomerInformation et elle donne l'exception que RedirectToAction n'existe pas dans le contexte actuel – Madhurima

0

Vous pouvez utiliser

Return RedirectToAction("Login", "Account"); 

rediriger vers un autre contrôleur et la méthode

+0

Vous ne pouvez pas faire ça ici. C'est ce que j'ai pensé d'abord, mais il essaie de le faire dans le getter de sa classe statique - qui retourne CustomerInfo() – Laiman