我有一個存儲各種信息(即,FormID,QuestionAnswerList等)的控制器。目前我正在將它們存儲在Controller.Session中,它工作正常。我想把一些邏輯分解成一個單獨的類(即規則控制器),在那裏我可以執行某些檢查等,但是當我嘗試在那裏引用會話時,它是空的。很明顯,會議僅在特定控制者的背景下才有效,但每個人都在做什麼呢?會話狀態如何在MVC 2.0中工作?
我想這很常見,你想在不同的控制器中共享某些「全局」變量,最佳實踐是什麼?
這裏是我的代碼的一部分:
以我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」]爲null!
我的第二控制器(也來自BaseController派生):
List<QuestionAnswer> currentList = (List<QuestionAnswer>)QuestionAnswers;
上面行失敗!它看起來像Session對象本身爲空(不只是會話[「QuestionAnswers」])
你可以給一些代碼。我在我的網站中使用會話狀態沒有問題。實際上,我在會話中存儲自定義類對象,並在會話中傳遞該類中的所有數據。(用戶名,用戶名,用戶區等) – 2010-07-29 00:26:44
這方面沒有真正改變。這裏是一個類似的SO問題:http://stackoverflow.com/questions/915470/asp-net-mvc-session-vs-global-vs-cache 你可以顯示一些設置和檢索的代碼? – spinon 2010-07-29 00:29:04
上面添加了代碼,看起來像Session對象本身爲空並導致失敗。 – 2010-07-29 03:21:38