If I want to access Request object in controller action I need to write HttpContext.Request
, whereas if I want to access the same object in MVC view, I need to write HttpContext.Current.Request
.
Is there any difference between them?
The problem I am facing is that, the cookies which I set through HttpContext.Response.Cookies.Add
in controller action are not being retrieved in HttpContext.Current.Request.Cookies
collection in an MVC view, though I can see those cookies through javascript.
问问题
2090 次
2 回答
3
您必须HttpContext.Request
在控制器和HttpContext.Current.Request
视图中编写的原因是因为您编写的控制器继承了抽象类Controller
,该抽象类具有名为HttpContext
type的属性HttpContextBase
。HttpContext
然后,该视图使用为您提供当前请求的 httpcontext 对象的密封类。
它们之间有什么区别吗?
HttpRequest
不,因为两者都为您提供当前请求的相同对象。
于 2013-04-17T13:25:02.600 回答
0
除非我弄错了,否则您会在响应中写入一个 cookie,但是在发出下一个请求之前,该 cookie 在请求中不可用(即,您必须再次加载相同的页面或新页面才能使其读取曲奇饼)。Cookie 不是在控制器和视图之间共享信息的好方法,您应该使用 ViewData 或 ViewBag。
此外,您必须确保在已经输出任何内容后不写入 cookie,这Response.Write
是不推荐的原因之一。
javascript 工作的原因是它在客户端而不是服务器上读取 cookie。
于 2013-04-17T14:54:32.230 回答