Principales respuestas
ayuda con variables de session

Pregunta
-
hola, tengo el siguiente codigo en el controlador
public ActionResult Login(Models.User user) { if (ModelState.IsValid) { if (user.IsValid(user.UserName, user.Password)) { System.Web.Security.FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe); Session["UserName"] = user.UserName; var algo = (string)Session["UserName"]; return RedirectToAction("Index", "Home"); } else { ModelState.AddModelError("", "Login Incorrecto"); } } return View(user); }
y en otro controlador me gustaria llamar a la variable de session que le entrego el valor como podria hacerlo, ya que de esta forma no puedo.
(string)Session["UserName"];
Respuestas
-
al final utilice una clase
public class Navegacion { private const string _userName = "UserName"; public static string UserName_ { get { if (HttpContext.Current.Session[_userName] == null) return string.Empty; else return (string)HttpContext.Current.Session[_userName]; } set { HttpContext.Current.Session[_userName] = value; } } }
y luego las llamo desde cualquier controlador.- Marcado como respuesta kumpiita viernes, 3 de marzo de 2017 15:01
Todas las respuestas
-
Para meter el valor desde cualquier controlador, se pone Session["UserName"]=valor;
y para leerla, valor=(string)Session["UserName"];
¿Por qué en un sitio se pone (string) y en el otro no? Porque el Session guarda un valor de tipo object. A la hora de guardar algo en un object le puedes pasar cualquier valor y no requiere conversión explícita porque object es la clase madre de todas las clases. Pero al leerlo y pasar de object a otro tipo, sí que hay que indicar la conversión tal como (string), porque el compilador no puede saber qué clase de objeto habrá dentro del object en tiempo de ejecución.
-
al final utilice una clase
public class Navegacion { private const string _userName = "UserName"; public static string UserName_ { get { if (HttpContext.Current.Session[_userName] == null) return string.Empty; else return (string)HttpContext.Current.Session[_userName]; } set { HttpContext.Current.Session[_userName] = value; } } }
y luego las llamo desde cualquier controlador.- Marcado como respuesta kumpiita viernes, 3 de marzo de 2017 15:01