我想在MVC中使用會話狀態,我一直堅持整個晚上! 我知道會話狀態應該在MVC中謹慎使用 - 但我確定我想用它來做這一頁 - 所以會喜歡解決方案而不是意見。頁面加載之間ASP.NET MVC會話丟失
基本上,我有一個CAPTCHA圖像的聯繫表單。加載頁面時,我想將會話設置爲CAPTCH圖像(動態生成的圖像)中使用的字符。 我有一個'新的圖像'鏈接,異步創建一個新的代碼,設置會話和動態加載一個新的圖像到屏幕上。
只要頁面沒有加載或重新加載,會話就會保持設置狀態。我需要能夠根據會話中的代碼驗證用戶輸入(應該反映顯示給用戶的內容),但會話是空的。
如果我對圖像執行AJAX重新加載,即異步設置會話 - 當我執行一個帖子時會話被設置!
發生了什麼事?
我需要能夠堅持會話值 - arrrhhhh!
我有,這是一個基本的控制器:
public new HttpContextBase HttpContext
{
get
{
HttpContextWrapper context = new HttpContextWrapper(System.Web.HttpContext.Current);
return (HttpContextBase)context;
}
}
和在控制器我有:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Contact(ContactForm c, string button)
{
string sessCaptcha = HttpContext.Session["CAPTCHA_Contact"] == null ? "" : HttpContext.Session["CAPTCHA_Contact"].ToString();
}
任何想法?????漂亮的請用上面的櫻桃:)
謝謝!
不要認爲同樣的事情適用於重定向,但你的權利,響應.end將殺死你的會話! – jonezy 2011-03-07 20:55:07
我通過使用不同的結果--FileStreamResult或類似的東西來修復代碼 - 這允許我設置會話並返回通過內存流創建的動態生成的圖像。 – 2011-03-08 13:03:33
我認爲這可能會工作,如果你做了Response.End(true),因爲它允許響應生命週期完成。 – 2011-12-07 10:17:46