2014-10-22 6 views
1

I хава 2 контроллера: ControllerA и ControllerB, и установите значение для сессии в controllerA, но не может получить значение в ControllerB, такой код:C# MVC сессия является недействительным

public class ControllerA : Controller 
{ 
    public ActionResult Index() 
    { 
     Session["a"] = "test"; 
    } 
} 

public class ControllerB : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.Test = Session["a"].ToString(); 
    } 
} 

Я попытался использовать куки, чтобы вместо сессии, но имеет такую ​​же проблему. Я не знаю, должен ли я использовать сеанс в C# MVC, пожалуйста, дайте мне знать, если что-то лучше, чем сеанс. Спасибо.

+0

http://stackoverflow.com/questions/560084/session-variables-in-asp-net-mvc – Simon

+0

вы можете показать реальный код вместо образца –

+1

Был дан ответ с несколькими предлагаемыми здесь решениями: http://stackoverflow.com/questions/10629882/asp-net-mvc-session-is-null – Rimmon

ответ

0

Сначала создайте SessionController.cs

public class SessionController 
{ 

    const string sessionname = "UserContext"; 
    public static SessionDetail UserContext 
    { 
     get 
     { 
      return System.Web.HttpContext.Current.Session[sessionname] as SessionDetail; 
     } 
     set 
     { 
      HttpContext.Current.Session[sessionname] = value; 
     } 
    } 

} 
public class SessionDetail 
{ 
     public string Employee_ID { get; set; } 
} 

наследующий этот контроллер в любой другой контроллер, где Session является использование

, например:

public class DashboardController : SessionController 
{ 
    SessionController.UserContext.Employee_ID = "1";//Assign Value 
    var empId = SessionController.UserContext.Employee_ID; //Use Value 
    .... 
} 

Затем добавьте этот код к Global.asax

protected void Session_Start() 
{ 
    SessionDetail sdetail = new SessionDetail(); 
    SessionController.UserContext = sdetail; 
} 
+0

вы можете добавить более переменную в класс SessionDetail и использовать его. – ujval

Смежные вопросы