我想在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