Cookies HttpContext.Current.Request和HttpContext.Request之间有什么区别吗?
如果我想在控制器操作中访问请求对象,我需要编写Cookies HttpContext.Current.Request和HttpContext.Request之间有什么区别吗?,cookies,asp.net-mvc-4,httpcontext,Cookies,Asp.net Mvc 4,Httpcontext,如果我想在控制器操作中访问请求对象,我需要编写HttpContext.Request,而如果我想在MVC视图中访问同一对象,我需要编写HttpContext.Current.Request。 他们之间有什么区别吗? 我面临的问题是,我在控制器操作中通过HttpContext.Response.cookies.Add设置的cookie没有在MVC视图中的HttpContext.Current.Request.cookies集合中检索,尽管我可以通过javascript看到这些cookies。您必须
HttpContext.Request
,而如果我想在MVC视图中访问同一对象,我需要编写HttpContext.Current.Request
。
他们之间有什么区别吗?
我面临的问题是,我在控制器操作中通过
HttpContext.Response.cookies.Add
设置的cookie没有在MVC视图中的HttpContext.Current.Request.cookies
集合中检索,尽管我可以通过javascript看到这些cookies。您必须在控制器中编写HttpContext.Request
,并在视图中编写HttpContext.Current.Request
,这是因为您编写的控制器继承了抽象类controller
,该类具有名为HttpContext
的类型属性HttpContextBase
。然后,视图使用密封类HttpContext
,该类为当前请求提供一个HttpContext对象
他们之间有什么区别吗
不可以。因为两者都为当前请求提供了相同的
HttpRequest
对象。除非我弄错了,否则您会在响应中写入一个cookie,但在发出下一个请求之前,该cookie在请求中不可用(即,您必须再次加载相同的页面或新页面以使其读取cookie)。Cookie不是在控制器和视图之间共享信息的好方法,您应该使用ViewData或ViewBag
此外,您必须确保在输出任何内容之后,您没有向cookie写入任何内容,这也是不建议使用Response.Write
的原因之一
javascript工作的原因是它在客户端而不是服务器上读取cookie。好的,我面临的问题是,我在控制器操作中设置了cookie,并希望在MVC视图中读取它,但它没有显示任何值。但是,如果我尝试从同一视图的javascript读取它,它将显示值。解决方案是什么?如果你这样做:
Response.Cookies.Add(新的HttpCookie(“cookie_monster”,“六眼”)在控制器中执行@HttpContext.Current.Request.Cookies[“cookie\u monster”]。值
没有显示任何内容?你是这样用的吗?没有道理。