本文目的:
让属性窗口中的修改同步到aspx源代码视图
在添加了可折叠的属性之后,我们可以重写RenderContents()方法,以便输出唐诗的作者信息,如以下代码所示。
-
-
-
-
- protected override void RenderContents(HtmlTextWriter output)
- {
- string OutText = "";
-
- if (!String.IsNullOrEmpty(Title))
- {
- OutText += "<p style="/" mce_style="/""text-align:center; font-size:12pt; font-weight:bold;/">" + Title + "(" + PoetryType + ")</p>";
- }
-
- if (!String.IsNullOrEmpty(PoetryAuthor.Name))
- {
-
- OutText += "<p style="/" mce_style="/""text-align:center; font-size:9pt; font-weight:bold;/">作者:" + PoetryAuthor.Name +" ";
-
- if (!String.IsNullOrEmpty(PoetryAuthor.CourtesyName))
- {
- OutText += "字:" + PoetryAuthor.CourtesyName + " ";
- }
-
- if (!String.IsNullOrEmpty(PoetryAuthor.SelfTitled))
- {
- OutText += "号:" + PoetryAuthor.SelfTitled + " ";
- }
- OutText += "</p>";
- }
-
- OutText += "<p style="/" mce_style="/""text-align:center; font-size:10pt;/">" + Text + "</p>";
- output.Write(OutText);
- }
下面,我们在自定义控件里添加上作者属性值。
可是,在添加作者属性值时,发现了一个问题,当我们在属性窗口里添加了属性值之后,在aspx文件的源代码窗口中并没有同时添加作者属性的内容,如下图所示。
由于aspx中的源代码没有同步添加作者属性值,所以,在生成后的网页中,也看不到作者信息,如下图所示。
当然,我们也可以直接在aspx源代码中添加作者属性值,如下图所示。
从上图可以发现,在aspx源代码中添加的作者属性值,属性窗口中可以同步显示。如果生成后浏览该网页,可以看到作者信息,如下图所示。
要解决这个问题,则必须要为作者类中的每个属性都添加一个[NotifyParentProperty(true)]特性,如以下代码所示。
-
-
-
- public class Author
- {
-
- private string _name = null;
-
- private string _courtesyName = null;
-
- private string _selfTitled = null;
-
-
-
- [NotifyParentProperty(true)]
- public string Name
- {
- get
- {
- return _name;
- }
- set
- {
- _name = value;
- }
- }
-
-
-
- [NotifyParentProperty(true)]
- public string CourtesyName
- {
- get
- {
- return _courtesyName;
- }
- set
- {
- _courtesyName = value;
- }
- }
-
-
-
- [NotifyParentProperty(true)]
- public string SelfTitled
- {
- get
- {
- return _selfTitled;
- }
- set
- {
- _selfTitled = value;
- }
- }
- }
NotifyParentProperty特性的作用是说明是否将属性窗口中对子属性的修改上传到对象模型,并在被修改了的子属性的控件中产生修改通知。现在明白为什么属性作者属性的子属性时为什么在aspx源代码中没有同步修改了吧,这是因为没有设置NotifyParentProperty特性,VS都不知道你在属性窗口中对子属性进行修改。
重新生成之后,再对属性窗口中的值进行修改,如下图所示,aspx源代码窗口中的内容也进行了修改。
运行结果如下图所示。
===================================================================
原创不容易,转载请注明出处:http://hi.csdn.net/smallfools
相关链接:
- 在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目
- 在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
- 在VS2008中创建自定义控件(三)在网页中添加自定义控件
- 在VS2008中创建自定义控件(四)为自定义控件添加默认值
- 在VS2008中创建自定义控件(五)修改tagprefix
- 在VS2008中创建自定义控件(六)创建完全自定义控件
- 在VS2008中创建自定义控件(七)自定义控件的中常用到的特性
- 在VS2008中创建自定义控件(八)输出HTML代码
- 在VS2008中创建自定义控件(九)添加属性
- 在VS2008中创建自定义控件(十)添加枚举型属性
- 在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
- 在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
- 在VS2008中创建自定义控件(十三)添加内镶属性
- 在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级
- 在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法
===================================================================
本例源代码可以在http://download.csdn.net/source/3266002下载