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号
浙公网安备 33010602011771号