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 ></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组件编程》

相关文章:

  • 2022-02-14
  • 2022-12-23
  • 2021-08-13
  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
猜你喜欢
  • 2022-01-07
  • 2022-01-04
  • 2022-01-07
  • 2022-12-23
  • 2021-06-19
  • 2022-01-07
  • 2022-12-23
相关资源
相似解决方案