本文目的:
1、创建一个自定义控件,该控件可以用来存储一首唐诗。
2、在自定义控件中添加属性。
3、在RenderContents()方法中实现复杂一点的功能。
先假设一下,以上的唐诗自定义控件至少需要两个属性,一个是唐诗的标题,一个是唐诗的内容。那么,我们的第一步,应该是在自定义控件项目中添加一个名为“poetry”的ASP.NET服务器控件,然后为自定义控件添加属性。
在《在VS2008中创建自定义控件(六)创建完全自定义控件》中我们可以知道,当创建一个自定义控件时,VS会自动为该自定义控件添加一个Text属性,这个属性我们可以直接用来代表唐诗的内容。为了便于理解,我们将VS自动生成的Text属性修改如下:
/// <summary> /// 唐诗的内容 /// </summary> [Category("Data")] //放到“数据”分组中 [Browsable(true)] //该项属性是否会显示在控件的“属性”窗口中 [Description("诗的内容")] //属性的说明 public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } }
然后,通过复制Text属性的代码,我们可以很容易地为自定义控件添加另一个属性——唐诗的标题,在这里假设为属性名是Title。那么定义Title属性的代码如下所示。
/// <summary> /// 唐诗的标题 /// </summary> [Category("Data")] //放到“数据”分组中 [Browsable(true)] //该项属性是否会显示在控件的“属性”窗口中 [Description("诗的标题")] //属性的说明 public string Title { get { String s = (String)ViewState["Title"]; return ((s == null) ? String.Empty : s); } set { ViewState["Title"] = value; } }
在两个属性添加完毕之后,下一步应该考虑怎么在浏览器中自定义控件中的内容。请不要忘记在《在VS2008中创建自定义控件(八)输出HTML代码》中介绍过的,通过重写RenderContents()方法来达到呈现自定义控件的目的(也就是在浏览器窗口中输出由自定义控件的值组成的HTML代码)。重写的代码如下所示。
/// <summary> /// 呈现控件 /// </summary> /// <param name="output"></param> protected override void RenderContents(HtmlTextWriter output) { string OutText = "<p style="/" mce_style="/""text-align:center; font-size:12pt; font-weight:bold;/">" + Title + "</p>"; OutText += "<p style="/" mce_style="/""text-align:center; font-size:10pt;/">" + Text + "</p>"; output.Write(OutText); }
完成以上代码之后,我们可以将自定义控件直接拖到网页中,此时,在自定义控件的“属性”窗口中可以看到我们为自定义控件添加的属性,也可以在网页的“设计”窗口看到自定义控件的大概模样,如下图所示。
在Title属性和Text属性中添加属性值并生成解决方案之后,我们可以看到运行结果如下图所示。
再查看一下网页的源代码,我们可以看到在<span></span>标签中的源代码就是RenderContents()方法中输出的内容,如下图所示。
===================================================================
原创不容易,转载请注明出处:http://hi.csdn.net/smallfools
相关链接:
===================================================================
本文的源代码可以在http://download.csdn.net/source/3267829中下载