1. 构建一个简单的组件:
让他显示一个默认的粗体Hello文本!
public class SimpleLabel:Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<b>Hello<b>");
base.Render (writer);
}
}
2. 进一步,添加两个属性用来保存一些有意义的数据,一个UserName,一个Tag。
public class SimpleLabel:Control
{
string strUserName;
object objTag;
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<b>Test<b>");
base.Render (writer);
}
public string UserName
{
get{return strUserName;}
set{ strUserName = value;}
}
public object Tag
{
get{return objTag;}
set{ objTag = value;}
}
}
3. 再进一步,如果这样子使用这个控件将会失败!
<cc1:SimpleLabel id="SimpleLabel1" KoHello="OK" runat="server"></cc1:SimpleLabel>
因为SimpleLabel并没有定义属性KoHello。可以采取如下的改进措施:使用IAttributeAccessor接口,这样就可以自由使用属性而不必在空间中预先定义了!
public class SimpleLabel:Control,IAttributeAccessor
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<b>Test<b>");
base.Render (writer);
}
string IAttributeAccessor.GetAttribute(string name)
{
return "";
}
void IAttributeAccessor.SetAttribute(string name,string value)
{
}
}
That’s All!
学习自《深入剖析Asp.net组件编程》
浙公网安备 33010602011771号