- 浏览: 82014 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
ASP.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,就可以预先加载其他信息。
Portal 使用查询字符串值作为参数,以构造一个新的 PortalSettings 对象,并将它添加到 Global.asax 的 BeginRequest 事件的 Context.Items 中。由于在每个请求开始处都执行了开始请求,这使得与该选项卡有关的值在应用程序的所有页和组件中都可用。请求完成后,对象将被自动丢弃
void Application_BeginRequest(Object sender, EventArgs e)
{
int tabIndex = 0;
int tabId = 0;
// 从查询字符串获取 TabIndex
if (Request.Params["tabindex"] != null) {
tabIndex = Int32.Parse(Request.Params["tabindex"]);
}
// 从查询字符串获取 TabID
if (Request.Params["tabid"] != null) {
tabId = Int32.Parse(Request.Params["tabid"]);
}
Context.Items.Add("PortalSettings", new PortalSettings(tabIndex, tabId));
}
DesktopPortalBanner.ascx 用户控件从 Context 请求 PortalSetting 的对象,以访问 Portal 的名称和安全设置。事实上,此模块是操作中的 Context 的一个典型综合示例。为阐明这一点,我已将代码进行了一些简化,并用粗体标记了 HTTP 或应用程序特定的 Context 被访问过的所有地方。
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
public int tabIndex;
public bool ShowTabs = true;
protected String LogoffLink = "";
void Page_Load(Object sender, EventArgs e) {
// 从当前上下文获取 PortalSettings
PortalSettings portalSettings =
(PortalSettings) Context.Items["PortalSettings"];
// 动态填充门户站点名称
siteName.Text = portalSettings.PortalName;
// 如果用户已登录,自定义欢迎信息
if (Request.IsAuthenticated == true) {
WelcomeMessage.Text = "欢迎" +
Context.User.Identity.Name + "!<" +
"span class=Accent" + ">|<" + "/span" + ">";
// 如果身份验证模式为 Cookie,则提供一个注销链接
if (Context.User.Identity.AuthenticationType == "Forms") {
LogoffLink = "<" + "span class="Accent">|</span> " +
"<a href=" + Request.ApplicationPath +
"/Admin/Logoff.aspx class=SiteLink> 注销" +
"</a>";
}
}
// 动态显示门户选项卡条
if (ShowTabs == true) {
tabIndex = portalSettings.ActiveTab.TabIndex;
// 生成要向用户显示的选项卡列表
ArrayList authorizedTabs = new ArrayList();
int addedTabs = 0;
for (int i=0; i < portalSettings.DesktopTabs.Count; i++) {
TabStripDetails tab =
(TabStripDetails)portalSettings.DesktopTabs[i];
if (PortalSecurity.IsInRoles(tab.AuthorizedRoles)) {
authorizedTabs.Add(tab);
}
if (addedTabs == tabIndex) {
tabs.SelectedIndex = addedTabs;
}
addedTabs++;
}
// 用已授权的选项卡填充页顶部的选项卡
// 列表
tabs.DataSource = authorizedTabs;
tabs.DataBind();
}
}
</script>
<table width="100%" cellspacing="0" class="HeadBg" border="0">
<tr valign="top">
<td colspan="3" align="right">
<asp:label id="WelcomeMessage" runat="server" />
<a href="<%= Request.ApplicationPath %>">Portal 主页</a>
<span class="Accent"> |</span>
<a href="<%= Request.ApplicationPath %>/Docs/Docs.htm">
Portal 文档</a>
<%= LogoffLink %>
</td>
</tr>
<tr>
<td width="10" rowspan="2">
</td>
<td height="40">
<asp:label id="siteName" runat="server" />
</td>
<td align="center" rowspan="2">
</td>
</tr>
<tr>
<td>
<asp:datalist id="tabs" runat="server">
<ItemTemplate>
<a href='<%= Request.ApplicationPath %>
/DesktopDefault.aspx?tabindex=<%# Container.ItemIndex %>&tabid=
<%# ((TabStripDetails) Container.DataItem).TabId %>'>
<%# ((TabStripDetails) Container.DataItem).TabName %>
</a>
</ItemTemplate>
<SelectedItemTemplate>
<span class="SelectedTab">
发表评论
-
图片问题?
2004-06-12 00:58 644图片问题? 例如我有一个ASP.NET工程在目录C:\BBS下 ... -
用Javascript在客户端实现遍历datagrid,DataList控件,像MSN中的全选
2004-07-04 21:56 1456刚刚看了..NET中遍历DataList控件,像MSN中的全选 ... -
ASP.NET状态管理之一(概括篇)
2004-07-14 00:50 670每次将网页发送到服务器时,都会创建网页类的一个新实例。在传统的 ... -
ASP.NET状态管理之二(查询字苻串QueryString)
2004-07-14 01:25 827查询字苻串是追加在URL后的数据(也是我常用的)例如:http ... -
ASP.NET状态管理之三(隐藏域HiddenField)
2004-07-14 01:50 2244ASP.NET 允许您将信息存储在 HiddenFiel ... -
ASP.NET状态管理之七(其他物理数据存放媒体)
2004-07-15 23:25 634ASP.NET状态存储还可以存放在数据库,XML文件,文本文件 ... -
ASP.NET状态管理之六(缓存Cache)
2004-07-15 23:44 1508ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通 ... -
Web.config文件中</appSettings>节点的配置数值读取的2种方法,哪种更快?
2004-10-18 09:37 2412<appSettings> <add key ... -
准备精读开源的.NET代码,希望能坚持
2004-12-08 12:53 1018近来无事,把开源的.NET全部找出来,准备精读。 阅读同时想把 ... -
代码阅读总结之ASP.NET StartKit Commerce
2004-12-20 16:47 845ASP.NET StartKit Commerce简单 ... -
asp.net能实现身份认证的EMAIL发送方法(c#版本)
2004-12-28 11:15 4911public void sendMail() ... -
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)
2005-01-17 14:56 685在ASP.NET StartKit TimeTracker中由 ... -
代码阅读总结之ASP.NET StartKit TimeTracker(应用程序路径之处理笔记)
2005-01-24 17:34 666在开发中我们为了整个程序目录结构清晰化,望望会建立许多不同的文 ... -
代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)
2005-01-24 18:00 693以前在项目中数据绑定一直用<%# %> 今天在A ... -
Asp.net未处理异常的2种解决方式(个人总结篇)
2005-02-21 15:34 858Asp.net中引发未处理的异常时,我们怎么处理。我总结了2种 ... -
代码阅读总结之Fitch and Mather 7.0(资源文件Resource随笔)
2005-04-21 18:03 694在Fitch and Mather 7.0中利用了大量的资源文 ... -
代码阅读总结之Fitch and Mather 7.0(自定义字符串缓存页)
2005-10-18 13:29 786前段时间工作比较忙,没时间读代码,这几天有空,正好又来静读代码 ...
相关推荐
ASP.NET Core 5.0 中访问 HttpContext 的方法步骤 在 ASP.NET Core 5.0 中,访问 HttpContext 的方法步骤是通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 来实现的。只有在需要访问服务内的 ...
ASP.NET Core 读取 Request.Body 的正确方法 ASP.NET Core 读取 Request.Body 的正确方法是 ASP.NET Core 开发中一个常见的问题。许多开发者在读取 Request.Body 时都会遇到一些问题,本文将详细介绍读取 Request....
ASP.NET Core 应用通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 访问 HttpContext。 只有在需要访问服务内的 HttpContext 时,才有必要使用 IHttpContextAccessor。 通过 Razor Pages 使用 ...
nopCommerce是一个流行的开源电子商务平台,其开发者可能利用`HttpContext.Items`来在请求处理流程中传递特定的业务逻辑数据,如用户会话信息、购物车状态等,这样可以提高效率并减少不必要的数据库查询。...
在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,但通过添加“P3P”协议和使用 HttpContext.Current.Session,我们可以解决这个问题,从而确保应用程序的正常运行。 相关知识点: * 跨域和 Session ...
启用在ASP.NET Core应用程序上使用HttpContext.Current。 安装 从NuGet- PM > Install-Package AspNetCoreCurrentRequestContext 如何使用 首先,您必须在Startup类中的Configure方法IApplicationBuilder ...
在Web应用程序开发中,特别是在ASP.NET C#应用中,正确且有效地在类中使用Session是非常重要的,这能帮助我们实现用户个性化体验、购物车管理、登录状态维护等功能。 ### 一、理解ASP.NET中的Session Session对象...
回答的也多数都是:引用System.Web,不要用HttpContext.Current.Application应该用System.Web.HttpContext.Current.Application,后来在网上看到一篇关于System.Runtime.Remoting.Messaging.CallContext这个类的详细...
ASP.NET文件管理是一个高效且用户友好的在线文件管理系统,它为开发者提供了在Web环境中便捷地处理文件的能力。这个系统基于Microsoft的ASP.NET框架,利用其强大的功能和灵活性,为用户提供了一个安全、稳定且易于...
### ASP.NET 页面加载动画进度条实现方法 #### 一、背景与概述 在现代Web开发中,用户体验至关重要。用户在等待页面加载时如果能够看到一个动态的进度条,不仅可以提升用户体验,还能增加网站的专业感。本文将详细...
根据提供的文件信息,本文将详细解释如何在ASP.NET中实现GridView数据导出至Excel的功能。 ### ASP.NET GridView数据导出到Excel的实现方法 #### 一、导出概述 在Web开发中,尤其是在使用ASP.NET进行开发时,经常...
在编写自定义中间件时,需要注意流的读写状态以及资源管理,避免出现意外的异常或数据丢失。 总之,ASP.NET Core的中间件机制允许开发者灵活地处理HTTP请求和响应。通过正确地备份、读取和恢复`Request.Body`和`...
ASP.NET 文件管理是一个基于C#和.NET框架的实用工具,旨在提供一种简单的方式来组织和操作服务器上的文件。这个系统的核心功能可能包括文件的上传、下载、删除、重命名以及目录的浏览和创建。通过这样的系统,用户...
【核心代码】 1 2 3 4 5 6 7 8 ...using System.Net;...using System.Net.Http;... System.Web.HttpContext.Current.Server.MapPath(sourceDoc), System.Web.HttpContext.Current.Server.MapPath(saveDoc)); }
在ASP.NET开发中,`HttpContext.Current` 是一个非常重要的对象,它提供了对当前HTTP请求的各种信息的访问,包括Application、Session、Cache等。然而,在异步编程中,由于线程切换的原因,`HttpContext.Current` ...
四、ASP 和 ASP.NET 的区别 * ASP 和 ASP.NET 的主要区别表现在结构、速度和功能三个方面 五、ASP.NET 配置系统 * ASP.NET 配置系统包括服务器配置和应用程序配置,服务器配置信息存储在 machine.config 文件中,...
本文档总结了四种在ASP.NET(C#)环境中导出Excel的方法及其实现细节。 #### 1. 由Dataset生成 这种方法通过读取一个`DataSet`中的数据并将其转换为Excel格式。具体步骤如下: 1. **设置响应头**:首先设置`...
ASP.NET之Excel下载模板、导入、导出操作 ASP.NET是一种基于Web的开发框架,它提供了丰富的功能来处理Excel文件。 本文将介绍ASP.NET下Excel下载模板、导入、导出操作的实践经验,供大家参考。 一、下载模板功能 ...
ASP.NET 实现 301 重定向方法 在 ASP.NET 开发中,实现 301 重定向是一个非常重要的技术,特别是在搜索引擎优化(SEO)方面。为什么需要实现 301 重定向?因为搜索引擎将 www.abc.com 和 abc.com 识别为不同的两个...
### ASP.NET 文件夹及文件处理知识点详解 #### 一、创建与删除文件夹 在ASP.NET开发中,经常需要对服务器上的文件或文件夹进行操作。以下代码展示了如何检查一个文件夹是否存在,并根据检查结果创建或删除文件夹。...