Run Jetty Web Server Within Your Application
1、在第二章的(1)和(2)中我们都是采用字符串值传递给HtmlTextWriter类的Write方法,就会引起问题。比如出错无法捕捉,无法获得VS提供的感知功能等等。HtmlTextWriteTag、HtmlTextWriteAttribute、HtmlTextWriteStyle的枚举能帮助我们解决问题。
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方法进行修改。
4、我们把控件放到页面上,并在Default.aspx.cs页面上设置控件的Name和ShowName属性值
5、我们第一次请求页面会看到我们设置的值,当点击按钮后值发生了变化,变回了默认值,这是为什么呢?原因是:当ASP.NET处理完成第一次请求时,它释放用于处理请求的类(控件名)的对象。当对象被释放时,其属性将永久消失。当处理第二次时,ASP.NET将创造一个新的对象,并设置成默认值。我们用什么方法解决呢?Control类包括了一个名为ViewState的集合属性。这个集合涉及以各 非常重要的对象,他能够自动存储和加载通过页面回传的内容。我们就重写这两个属性。上章我们把属性申明为Virtual,大家可以继承上章的类,用Override重写。写好后,我们在点击按钮页面上的控件的值就不会发生变化了。
6、将对象存储到ViewState也存在些问题比如增加页面的大小等问题。所以最好吧重要的保存起来,不重要就不要保存了。