У меня есть контроллер, который хранит различную информацию (т. Е. FormID, QuestionAnswerList и т. Д.).В настоящее время я храню их в Controller.Session, и он работает нормально.
Я хотел разбить некоторую логику на отдельный класс (т. Е. RulesController), где я мог бы выполнять определенные проверки и т. Д., Но когда япопробуй сослаться на сессию там, это ноль.Понятно, что сессия остается действительной только в контексте конкретного контроллера, но что все делают по этому поводу?
Я думаю, что это довольно часто, вы хотите разделить определенные "глобальные" переменные в разныхконтроллеры, что является лучшей практикой?
Вот часть моего кода:
В моем классе BaseController:
public List<QuestionAnswer> QuestionAnswers
{
get
{
if (Session["QuestionAnswers"] == null)
{
List<QuestionAnswer> qAnswers = qaRepository.GetQuestionAnswers(CurrentSection, UserSmartFormID);
Session["QuestionAnswers"] = qAnswers;
return qAnswers;
}
else
{
return (List<QuestionAnswer>)Session["QuestionAnswers"];
}
}
set
{
Session["QuestionAnswers"] = value;
}
}
В моем первом контроллере (производном от BaseController):
QuestionAnswers = qaRepository.GetQuestionAnswers(CurrentSection, UserSmartFormID);
Я прошел по коду и вышеприведенный оператор выполняется нормально, устанавливая Session ["QuestionAnswers"], но затем, когда я пытаюсь получить от другого контроллера ниже, Session ["QuestionAnswers"]is null!
Мой второй контроллер (также производный от BaseController):
List<QuestionAnswer> currentList = (List<QuestionAnswer>)QuestionAnswers;
Сбой приведенной выше строки!Похоже, сам объект Session является нулевым (не только Session ["QuestionAnswers"])