1

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.

4

2 回答 2

3

您必须HttpContext.Request在控制器和HttpContext.Current.Request视图中编写的原因是因为您编写的控制器继承了抽象类Controller,该抽象类具有名为HttpContexttype的属性HttpContextBaseHttpContext然后,该视图使用为您提供当前请求的 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 回答