2011-10-27 92 views
5

我确定有一个请求范围的object的存储介质,类似于HttpContext.Current.Session,这个存储介质在全局只存在于一个请求的生命中,但我不能为了我的生活而记住它。单个请求生命周期的存储介质?

+0

你的意思是[ViewState](http://msdn.microsoft.com/en-us/library/ms972976.aspx)?由于它跨回发存储值,因此它不是广泛的请求。也许'Request.QueryString'或'Request.Params',但这也是为了维护回传值(并检测用户提交参数)?嗯,如果您只需要为单个请求存储值,为什么不简单地使用页面的类成员呢?这是生命周期正是页面的生命周期。 –

+0

@TimSchmelter,它是HttpContext.Items - 它很有用,因为它可以从静态上下文访问 – maxp

回答

10

我敢打赌,你正在考虑HttpContext.Items

获取一个键/值集合,可用于在HTTP请求期间在IHttpModule接口和IHttpHandler接口之间组织和共享数据。

对于在请求周期的不同部分之间共享HttpModules,HttpHandlers和页面之间的状态非常有用。

更多阅读:

注意事项使用时,无论是在同一个Web应用程序,HttpContext.Items同时适用于ASP.NET WebForms和ASP.NET MVC,但它有一个警告。更多关于this question.

0

在ASP.Net MVC中有TempData。只有从一个请求到下一个请求才能存活的项目依然存在。最终,它的存储是会话状态。

0

难道你不能使用ViewData(如果它的ASP.NET MVC)或ViewState(如果它的ASP.NET)?

+0

Viewstate在回发中持续存在,即跨越多个请求的跨度。 – maxp