我在服务器端有c#属性并在HTTP请求上设置它。该属性值是否会因另一个请求而持续存在?对不起,如果这是愚蠢的?
答案 0 :(得分:1)
一般来说,没有。如果它是存储在会话变量中的某些属性(例如在控制器的TempData
或应用程序会话数据中),或者如果您有其他自定义机制专门保留跨请求的值,它将持续存在。 / p>
有关选项的概述,请参阅MSDN上的state management recommendations页面。
答案 1 :(得分:1)
Reference : A good to read article和for MVC
不,如果您不使用以下方法保存,则无法访问它:
TempData:允许您存储为重定向而存活的数据。在内部,它使用Session作为烘焙存储,只是在重定向之后,数据被自动驱逐。
语法:TempData["foo"] = "bar";
ViewBag,ViewData:允许您将数据存储在将在相应视图中使用的控制器操作中。这假定操作返回视图但不重定向。仅在当前请求期间生活。
语法:ViewBag.Foo = "bar";
和ViewData["Foo"] = "bar";
应用程序对象: Application对象存储跨应用程序共享的数据,而不是特定用户共享的数据。尽管每个页面请求都有自己的Request和Response对象,但Web应用程序中对ASP页面的所有请求都共享同一个Application对象。在Web服务器启动后第一次从应用程序请求ASP页面时创建此对象,并在Web服务器关闭时或在IIS管理控制台中手动卸载Web应用程序时销毁该对象。由于此对象从一个页面请求持续存在,因此可用于存储要与应用程序中的所有其他页面共享的数据。
语法:Application(“varName”) = value
会话对象: Session对象与Application对象非常相似,因为它允许您存储在站点的所有页面之间共享的值。两者之间的主要区别在于,如果所有页面和访问您站点的所有客户端共享单个Application对象,则为每个客户端(浏览器)分配其自己的Session对象。因此,必须为您网站上发生的每个用户会话创建一个Session对象。
语法:Session(“username”) = “Abhinav bajpai”
视图状态: ViewState允许ASP.NET在每次回发时将表单字段重新填充到服务器,确保在用户点击提交按钮时不会自动清除表单。所有这些都会自动发生,除非您将其关闭,但您实际上也可以将ViewState用于您自己的目的。但请记住,虽然可以从您网站上的所有页面访问Cookie和会话,但不会在页面之间传送ViewState值。 StateBag实现视图状态,并管理ASP.NET页面和嵌入式控件在同一页面实例的连续帖子中保留的信息。
语法:ViewState(“FontSize”) = value
Cookie: Cookie是在未连接Web服务器和浏览器期间存储有关网站访问者数据的几种方法之一。 Cookie的常见用途是在访问之间记住用户。实际上,cookie是由Web服务器发送并由Web浏览器在客户端计算机上保存的小文本文件。
语法:Response.Cookies["MyCookieName"].Value=“MyCookieValue”;
Querystring:查询字符串用于将值或信息从一个页面传递到另一个页面。
语法:Request.QueryString(variable)[(index)|.Count]