回顾上一篇的例子,如果我们直接在页面中添加该控件:<cc1:myhyperlink id="MyHyperLink1" runat="server"></cc1:myhyperlink>,那么浏览该页面的时候你会看到如下的HTML代码:<span id="MyHyperLink1"><a href="http://www.liuwu.net" target="_blank">Welcome To Liuwu.Net</a></span>,比我们预想的多了一个span标签,其实由于我们继承了WebControl类,该类会默认生成<span></span>容器。如果不需要该标签,我们可以重载TagKey属性和AddAttributesToRender方法:
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.A;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.liuwu.net");
writer.AddAttribute(HtmlTextWriterAttribute.Target, "_blank");
base.AddAttributesToRender(writer);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("Welcome To Liuwu.Net");
}
TagKey属性指明了该控件最外层的标签,AddAttributesToRender方法则为该标签添加必要的属性,RenderContents方法在上一篇已经有介绍。重新浏览该页面,Span标签已经没有了。