自定义控件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RenderBeginTag()方法,将标记元素的结束标记写入到 方法, 方法 输出流。 输出流。 writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.WriteEncodedText("北大青鸟"); writer.WriteEncodedText("北大青鸟"); 北大青鸟 writer.RenderEndTag();//输出 输出</span> 输出
这就完成了最简单一个自定义服务器控件 了
使用自定义服务器控件
1.把自定义服务器控件加入工具箱 把自定义服务器控件加入工具箱
2.加入工具箱后,就可以像使用标准Web控件一样使用了 2.加入工具箱后,就可以像使用标准Web控件一样使用了 加入工具箱后
在 Web.config 文件中添加标记前缀映射
在<system.web>节点下添加如下配置 节点下添加如下配置
控件的呈现
Render()方法 方法 RenderBeginTag()方法 方法 RenderContents()方法 方法 RenderEndTag()方法 方法 protected internal override void Render(HtmlTextWriter writer) { this.RenderBeginTag(writer); this.RenderContents(writer); this.RenderEndTag(writer); }
HtmlTextWriter常用方法 常用方法
RenderBeginTag()方法(例如:<span>) 方法(例如: 方法 ) RenderEndTag()方法(例如:</span>) 方法( 方法 例如: ) AddStyleAttribute()方法(例如:<span 方法( 方法 例如: style=“color:red”>) ) Write()方法(例如:<span>ACCP</span>) 方法( 方法 例如: ) WriteEncodedText()方法(例如:<span><hr/></span>) 方法(例如: ) 方法 WriteBreak()方法(例如:<span><br/></span>) 方法( 方法 例如: ) WriteAttribute()方法(例如:<span title = “accp” 方法( 方法 例如: ></span>) )
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "20pt"); writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "red"); writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "yellow");
自定义控件的常用特性
常用特性
[
AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal), DefaultProperty("Text"), ToolboxData(" <{0}:FirstWebControl runat=\"server\"> </{0}:FirstWebControl> ")
]
给自定义控件增加一个Text属性 属性 给自定义控件增加一个 加一个Text属性 属性 加一个
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("在时间前显示的文本 在时间前显示的文本"), 在时间前显示的文本 ] public virtual string Text { get{相关代码 相关代码} 相关代码 set{相关代码 相关代码} 相关代码 }
举例
FreeTextBox(富文本框)、验证码控件 (富文本框)、验证码控件 )、
创建和使用简单自定义服务器控件
创建自定义服务器控件
一般会创建一个类库项目 添加一个文件夹FirstWebControl 添加一个文件夹 在里面添加一个类FirstWebControl继承自 在里面添加一个类 继承自
System.Web.UI.WebControls.WebControl
}
RenderBeginTag
开始标记呈现到指定的编写器中。 将控件的 HTML 开始标记呈现到指定的编写器中。此方 法主要由控件开发人员使用。 法主要由控件开发人员使用。 RenderBeginTag ( HtmlTextWriter writer ) HtmlTextWriter,表示要在客户端呈现 HTML 内容的输 , 出流。 出流。 该方法被设置为公共方法, 该方法被设置为公共方法,以便其他控件可以在 Web 服 务器控件的开始和结束标记之间呈现多个控件。 务器控件的开始和结束标记之间呈现多个控件。
控件的呈现
AddAttributesToRender ()方法 方法 该方法在RenderBeginTag()方法中调用,用来增加 方法中调用, 该方法在 方法中调用 样式属性,例如设置该控件的背景色为黄色。 样式属性,例如设置该控件的背景色为黄色。
protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "yellow");
writer.Write(this.ID); else writer.WriteEncodedT呈现到指定的编写器中。 将控件的 HTML 结束标记呈现到指定的编写器中。此方 法主要由控件开发人员使用。 法主要由控件开发人员使用。 RenderEndTag ( HtmlTextWriter writer ) HtmlTextWriter,表示要在客户端呈现 HTML 内容的输 , public override void RenderEndTag(HtmlTextWriter writer) 出流。 出流。 { 该方法被设置为公共方法, 该方法被设置为公共方法,以便其他控件可以在 Web 服 writer.RenderBeginTag(HtmlTextWriterTag.Span); 务器控件的开始和结束标记之间呈现多个控件。例如,在 务器控件的开始和结束标记之间呈现多个控件。例如, 控件内部我还要呈现一个span元素且内容为“ 北大青鸟 元素且内容为“ 控件内部我还要呈现一个 北大青鸟 元素且内容为 writer.WriteEncodedText(“北大青鸟 北大青鸟"); ” writer.RenderEndTag();
<pages theme="默认 默认"> 默认 <controls> <add tagPrefix="eagle" assembly="EagleWebControls" namespace="Eagle.WebControls"/> </controls> </pages>
在Web.config配置前缀后 配置前缀后
AddStyleAttribute()
对于 HtmlTextWriter 对象通过对 RenderBeginTag 方法 的后续调用创建的元素, 的后续调用创建的元素,向其开始标记中添加标记样式属 性。 例如要再元素中增加如下样式设置: 例如要再元素中增加如下样式设置: style="font-size:20pt;color:red;backgroundcolor:yellow;"
第九章
自定义服务器控件
本章目标
了解什么是自定义控件 开发、 开发、使用简单的自定义服务器控件 Web控件的呈现 控件的呈现 控件状态与视图状态
自定义服务器控件
自定义服务器控件
元素或任何其他客户端可见的元素, 如果控件要呈现用户界面 (UI) 元素或任何其他客户端可见的元素, 则应从 System.Web.UI.WebControls.WebControl(或派生类) (或派生类) 派生该控件。 派生该控件。 如果控件要呈现在客户端浏览器中不可见的元素( 如果控件要呈现在客户端浏览器中不可见的元素(如隐藏元素或 meta 元素),则应从 System.Web.UI.Control 派生该控件。 元素), ),则应从 派生该控件。 WebControl 类从 Control 派生,并添加了与样式相关的属性, 派生,并添加了与样式相关的属性, 如 Font、ForeColor 和 BackColor。 、 。 此外, 此外,一个从 WebControl 派生的控件也自行参与到 的主题功能。 的主题功能。
HtmlTextWriter的几个常用方法 的几个常用方法
RenderBeginTag()方法 方法 RenderEndTag()方法 方法 AddStyleAttribute()方法 方法 Write()方法 方法 WriteEncodedText()方法 方法 WriteBreak()方法 方法 WriteAttribute()方法 方法
用户控件中可以使用其他用户控件
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="CustomControlsDemo_Default" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
RenderBeginTag()
RenderBeginTag()该方法有两个重载 该方法有两个重载
writer.RenderBeginTag(HtmlTextWriterTag.Span);//重载之一 重载之一
writer.RenderBeginTag(“span”);//重载之二 重载之二
RenderEndTag()
<eagle:FirstWebControl ID="FirstWebControl1" runat="server" />
</asp:Content>
运行页面
在设计模式下 看不到任何可见控件 运行后 看不到任何可见控件 查看源文件, 查看源文件,看以看到如下内容
自定义控件的默认生成 默认生成
会生成一个<span>元素 会生成一个 元素 如果不想生成一个<span>元素,需要重写 元素, 如果不想生成一个 元素 需要重写TagKey属性 属性 protected override HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Div; } }
base.RenderEndTag(writer); }
HtmlTextWriter简介 简介
服务器控件输出流。 将标记字符和文本写入到 服务器控件输出流。 此类提供 服务器控件在向客户端呈现标记时所 使用的格式设置功能。 使用的格式设置功能。 通俗一点, 中控件的呈现就靠它了。 通俗一点,中控件的呈现就靠它了。 中控件的呈现就靠它了
RenderContents
将控件的内容呈现到指定的编写器中。 将控件的内容呈现到指定的编写器中。此方法主要由控件 开发人员使用。 开发人员使用。 protected override void(RenderContents(HtmlTextWriter writer) RenderContents HtmlTextWriter writer ) { HtmlTextWriter,表示要在客户端呈现 HTML 内容的输 , if 出流。 出流。(string.IsNullOrEmpty(Text))