第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
来源:互联网 发布:视频后期制作软件排行 编辑:程序博客网 时间:2024/05/16 09:05
2、我们先熟悉下这个三个枚举到底是做什么的:
(1)HtmlTextWriterAttribute: 指定 HTML元素的属性。使用方法HtmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Id, "tt");
(2)HtmlTextWriterStyle:指定HTML元素的样式。使用方法HtmlTextWriter.AddStyleAttribute(HtmlTextWriterStyle.Color, "Red");
(3)HtmlTextWriterTag:指定HTML元素。使用方法HtmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Table);要注意的是一个Begin对应一个End HtmlTextWriter.RenderEndTag();
(4)这三个枚举也有顺序的。先写Html元素的样式,再写Html元素的属性,最后写Html元素。
3、我们再次对Render方法进行修改。
/// <summary> /// 将服务器控件内容发送到提供的 System.Web.UI.HtmlTextWriter 对象,此对象编写将在客户端呈现的内容 /// </summary> /// <param name="writer">接收服务器控件内容的 System.Web.UI.HtmlTextWriter 对象</param> protected override void Render(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Border, "1"); writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "3"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write(Name); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Id, "Txt_Name"); writer.AddAttribute(HtmlTextWriterAttribute.Type, "text"); writer.AddAttribute(HtmlTextWriterAttribute.Name, "Txt_Name"); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Align, "center"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Id, "Txt_Show"); writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit"); writer.AddAttribute(HtmlTextWriterAttribute.Value, ShowName); writer.AddAttribute(HtmlTextWriterAttribute.Name, "Txt_Show"); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); base.Render(writer); }
4、我们把控件放到页面上,并在Default.aspx.cs页面上设置控件的Name和ShowName属性值
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TestControl1.Name = "Name"; TestControl1.ShowName = "Show"; } }
5、我们第一次请求页面会看到我们设置的值,当点击按钮后值发生了变化,变回了默认值,这是为什么呢?原因是:当ASP.NET处理完成第一次请求时,它释放用于处理请求的类(控件名)的对象。当对象被释放时,其属性将永久消失。当处理第二次时,ASP.NET将创造一个新的对象,并设置成默认值。我们用什么方法解决呢?Control类包括了一个名为ViewState的集合属性。这个集合涉及以各 非常重要的对象,他能够自动存储和加载通过页面回传的内容。我们就重写这两个属性。上章我们把属性申明为Virtual,大家可以继承上章的类,用Override重写。写好后,我们在点击按钮页面上的控件的值就不会发生变化了。
public class TestControl1:TestControl { public override string Name { get { return ViewState["Name"] != null ? (string)ViewState["Name"] : "姓名"; } set { ViewState["Name"] = value; } } public override string ShowName { get { return ViewState["ShowName"] != null ? (string)ViewState["ShowName"] : "显示"; } set { ViewState["ShowName"] = value; } } }
6、将对象存储到ViewState也存在些问题比如增加页面的大小等问题。所以最好吧重要的保存起来,不重要就不要保存了。
<div class="aspNetHidden"><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTE0NzYwMjQyMGRkvMfdka79n8ovQH1k1svSH++CDE0/Z7F4FAAhd2GxMrE=" /></div>代码下载地址:点击下载本博客内容有些来源于网络或书籍如果侵害到你的权益,请及时联系我(hch458458@vip.qq.com)
版权归nethch所有,转载请注明出处!
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(7) 控件事件的引发以及优化
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(4) Style类以及WebControl类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(2) 控件属性的申明
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(8) 页面的回传
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(8) 页面的回传
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(1) 自定义控件初始
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(6) 自定义Style类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(5) 继承WebControl类
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(9) 流程和生命周期
- asp.net自定义控件开发使用HtmlTextWriter类输出
- 最简单的自定义控件(3)--与HtmlTextWriter有关的枚举
- 自定义控件(3)HtmlTextWriter
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(1) 继承ComPositeControl类以及子控件
- ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(3) 事件冒泡
- asp.net控件开发基础(11) --------自定义视图状态管理
- 01背包另类诠释
- 动态CString
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(2) 控件属性的申明
- PL\SQL创建表空间+导入导出+listener.ora文件+tnsnames.ora文件
- test2
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
- 赢得职场好人缘的赞美法则
- iphone开发官网例子
- 【编程语言】C++----常量指针与指针常量的区别
- Android 中支持的几种传感器
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(4) Style类以及WebControl类
- Win XP迎十周岁生日 安全研究员呼吁将其卸载
- 使用ajax刷新jfreechart,jfreechart生成图片不变
- 对SQL2005 在默认的设置中是删除了 XP_CMDSHELL的一点解决办法