Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cookies HttpContext.Current.Request和HttpContext.Request之间有什么区别吗?_Cookies_Asp.net Mvc 4_Httpcontext - Fatal编程技术网

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”]。值
没有显示任何内容?你是这样用的吗?没有道理。