ASP.NET 自定义控件:WebRequestPanel






3.37/5 (13投票s)
本文介绍一个 ASP.NET 自定义控件,用于在页面从 Web 服务器请求数据时显示任何文本(如“加载中...”)。
引言
这是一个 ASP.NET 自定义控件,当浏览器从服务器请求数据时,会显示文本和/或图像。 它有很多选项可以设置背景色、前景色、字体、位置等。 要使用此控件,您只需将此控件拖放到要添加此功能的 ASPX 页面上即可。
使用代码
您可以在下面找到此控件中公开的一些属性。 这些不包括从 System.Web.UI.WebControls.WebControl
继承的属性。
属性
Left
- 控件的左侧位置Top
- 控件的顶部位置StyleSheet
- 提供 CSS 类时要使用的样式表ContentType
- 内容类型。 它可以是“Text”、“Image”或“Text N Image”; 默认为“Text”Text
- 要显示的文本,如果内容类型为“Text”或“Text N Image”; 默认为 'Loading.....'ImageURL
- 要显示的图像的 URL,如果内容类型为“Image”或“Text N Image”DisplayWhenNewSession
- 此属性指示是否在新会话创建时显示文本; 当设置为 false 时,在回发期间创建新会话时,它将不显示文本; 如果您收到HttpException
(0x80004005),请将此属性设置为 false; 默认为 false
让我们看一个例子
我们将看到两个例子。 一个是直接通过其属性将背景色、前景色等添加到控件,另一个是在 CssClass
中指定这些内容。
示例 1
在此示例中,所有背景色、前景色、字体等都通过控件公开的属性定义。
以下是要放入 ASPX 页面的 HTML 代码。
<cc1:WebRequestPanel id=WebRequestPanel1
Width="100px" Height="15px" Font-Size="Smaller"
Font-Names="Verdana" ForeColor="white" BackColor="red"
runat="server" Text=" Loading... "></cc1:WebRequestPanel>
具有上述控件的页面如下
示例 2
在此示例中,所有背景色、前景色、字体等都在 CssClass
中定义。 您在 StyleSheet
属性中设置要使用的样式表,以便控件知道要使用哪个样式表。 您可能想知道为什么要设置 StyleSheet
属性。 这是因为控件在其 Oninit
期间将表刷新到客户端; 在此期间,您已与页面链接的样式表不会发送到客户端,因此我们必须从控件将样式表发送到客户端。
以下是要放入 ASPX 页面的 HTML 代码
<cc1:WebRequestPanel Text=" Loading... " id="WebRequestPanel1"
runat="server" CssClass="WebRequestPanel"
StyleSheet="~/Style/StyleSheet.css"></cc1:WebRequestPanel>
具有上述控件的页面如下
局限性
- 您不应在可能添加或修改 HTTP 响应标头的页面中使用此控件。 如果您在代码中修改或添加任何 HTTP 响应标头,您将收到一条错误消息“在发送 HTTP 标头后,服务器无法追加标头。”
关注点
- 如果您收到一个异常,提示“会话状态已创建一个会话 ID,但由于应用程序已经刷新了响应,因此无法保存它”,请确保您已将
DisplayWhenNewSession
设置为“false”。 - 如果要设置任何属性,请在 HTML 本身中设置。 因为控件的 HTML 将在调用页面
Init
之前刷新到客户端,这是您可能获得更改属性的第一个机会。 - 如果要在 ASP.NET 1.1 中使用此控件,您只需下载源代码并将 WebRequestPanel.vb 复制到 .NET 1.1 类库中即可。 现在添加所需的引用并编译类库。
- 如果您从具有
WebRequestPanel
的页面转到没有WebRequestPanel
的页面,它也会在重定向的页面中可见; 要解决此问题,请将面板添加到重定向的页面并将DontDisplay
属性设置为true
。 确保控件的名称与您在上一页中的名称相同。
历史
- 2006-08-24 (YYYY-MM-DD): 文章创建。
- 2006-11-09 (YYYY-MM-DD): 修复“始终显示”问题。