自定义控件(8)处理标签间的内容ParseChildrenAttribute
来源:互联网 发布:大屏数据可视化 编辑:程序博客网 时间:2024/05/22 18:21
标签间的内容就是指开始标签与结束标签之间的代码。如<TextBox>我解析成了属性</TextBox>与<panel><Label></Label></panel>\
同样是标签间的内容,TextBox解析成了属性,Panel解析成了控件。我们怎样来定制对控件标签内容的解析行为呢。
我们可以利用ParseChildrenAttribute控制控件对其内容的解析行为,它有4个构造函数
(1)ParseChildren() ChildrenAsPropertiew属性默认为false
(2)ParseChildren(Boolean) 其中bool参数赋值给ChildrenAsProperties
(3)ParseChildren(Type) 其中Type参数将赋值给ChildControlType属性,以显示指定控件内可接受哪些类型的子控件。
(4)ParseChildren(Boolean,String) 两个参数分别赋给ChildrenAsProperties和DefaultProperty属性,DefaultProperty用于指定控件内容解析成哪个属性的值。
下面我们修改一下相册控件的代码,把控件内容解析成imgUrl属性
using System.Web.UI;using System.Web.UI.WebControls;namespace kjlx.BLL.PChildrenAttribute{ [ParseChildren(true,"imgUrl")] //把控件内容解析为imgUrl属性 public class ParseChildrenTest:WebControl { /// <summary> /// 定义属性 /// </summary> public virtual string imgUrl { get { if (ViewState["imgUrl"] != null) { return (string)ViewState["imgUrl"]; } return string.Empty; } set { ViewState["imgUrl"] = value; } } protected override void Render(HtmlTextWriter writer) { //最外层div样式 writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "center"); writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "194px"); writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "194px"); writer.AddStyleAttribute("background", "url(images/background.gif) no-repeat left"); //最外层div开始 writer.RenderBeginTag(HtmlTextWriterTag.Div); //img属性和样式 //应用_imgUrl writer.AddAttribute(HtmlTextWriterAttribute.Src, this.imgUrl); writer.AddAttribute(HtmlTextWriterAttribute.Width, "160px"); writer.AddAttribute(HtmlTextWriterAttribute.Height, "160px"); writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none"); writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "0px"); writer.AddStyleAttribute(HtmlTextWriterStyle.MarginTop, "16px"); //img开始 writer.RenderBeginTag(HtmlTextWriterTag.Img); //img结束 writer.RenderEndTag(); //最外层div结束 writer.RenderEndTag(); } }}html代码
<cc1:ParseChildrenTest ID="ParseChildrenTest1" runat="server" >images/Nature.jpg</cc1:ParseChildrenTest>
注意:标签内容不要留有空格
显示结果
我们也可以试试在button里面加一个textbox
代码
using System.Web.UI;using System.Web.UI.WebControls;namespace kjlx.BLL.PChildrenAttribute{ [ParseChildren(false,"Item")] public class ParseChildrenTest3:WebControl { protected override System.Web.UI.HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Button; } } public virtual TextBox Item { get { if(ViewState["Item"]!=null) { return (TextBox)ViewState["Item"]; } return null; } set { ViewState["Item"] = value; } } protected override void Render(HtmlTextWriter writer) { base.Render(writer); writer.Write(Item); } }}
html代码
<cc1:ParseChildrenTest3 ID="ParseChildrenTest3" runat="server" > <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </cc1:ParseChildrenTest3 >
显示结果
- 自定义控件(8)处理标签间的内容ParseChildrenAttribute
- asp.net控件开发(三):处理标签间内容
- asp.net控件开发(三):处理标签间内容
- JSON解析的内容中含有table标签怎么处理以及自定义标签的处理
- 自定义标签改变标签体的内容
- 创建自己的自定义标签,并输出标签中的内容
- 自定义View-自动换行的标签控件
- 自定义控件--自定义内容可以滚动的TextView
- 简单标签的使用自定义标签控制页面内容(标签体)是否输出、
- 自定义用户控件的事件处理
- android处理滚动效果的自定义控件
- c#自定义控件中事件的处理
- css处理标签内容溢出
- 根据Text内容的长短改变TextSize的自定义控件
- 自定义组合控件处理
- WPF 自定义控件的坑(蠢的:自定义控件内容不显示)
- 使用 ParseChildrenAttribute
- 【转】Android自定义控件中自定义属性的处理方式
- 希尔排序和shell之希尔排序
- HTTP系列之HTTP概念解释
- hdu1556 Color the ball【树状数组 || 线段树 || 技巧*区间修改】
- eclipse4.x下安装SVN时,选择SVN CONNECTOR时报错解决方法!!!
- 设计模式之代理模式
- 自定义控件(8)处理标签间的内容ParseChildrenAttribute
- ext中根据grid中当前row的内容设置row的背景色
- JAVA设计模式——单例模式
- 日语词汇辨析:以来と以降と以後
- 《Visual Basic 程序设计》——>过程
- 隐马尔科夫模型(HMM)
- ASP.NET Razor – VB 循环和数组
- System.ServiceModel.AddressAccessDeniedException
- html中元素尺寸、坐标的获取