ASP.NET状态管理之四(暂存状态HttpContext.Items)2012-01-22 博客园 aierongASP.NET提供一个类System.Web.HttpContext ,用来表示上下文,此对象有一个属性Items暂存状态就是利用HttpContext.Items属性来存放数据MSDN中HttpContext.Items属性的解释是这样的:获取可用于在 HTTP 请求过程中在 IHttpModule 和 IHttpHandler 之间组织和共享数据的键值HttpContext.Items属性中可以存放任何类型数据,无论这个属性中存放什么数据,都会在请求处理结束后自动清除,这就是暂存状态,数据的存放时间非常短.//例如:
//我们有一页面A.ASPX,有一按钮ID:Submit,点按钮把页面转向b.aspx页面public void Submit_Click(Object sender, EventArgs E){  SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");  SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);  DataSet ds = new DataSet();  myCommand.Fill(ds, "Authors");  //把数据放入暂存中  Context.Items["MyData"] =ds;  Server.Transfer(b.aspx);  }//b.aspx页面中public void Page_Load(Object sender, EventArgs E) {  if (!IsPostBack)  {  //取得暂存数据  DataSet ds=(DataSet)Context.Items["MyData"];  //其它数据过程  } }在ibuyspyportal中我们也看到了此功能的使用:查询字符串包含正被请求的选项卡的 TabIndedx 和 TabId 参数。在处理请求的整个过程中,一直使用此信息筛选要显示给用户的数据。http://www.ibuyspyportal.com/DesktopDefault.aspx?tabindex=1&tabid=2要使用查询字符串值,需要首先确保它是一个有效值,如果不是,则要进行一些错误处理。它并不是一大串代码,但是您真的要在每个使用该值的页和组件中复制它吗?当然不!在 Portal 示例中,甚至更多的地方都涉及到它,因为一旦我们知道了 TabId,就可以预先加载其他信息。