一、选择基类【control,webcontrol,compositecontrol,现有asp.net control】
二、控件呈现顺序
RenderControl(HtmlTextWriter writer)
Render(HtmlTextWriter writer)
RenderBeginTag(HtmlTextWriter writer)
RenderContents(HtmlTextWriter output)--默认在外面生成一个span
RenderEndTag(HtmlTextWriter writer)
/// <summary>
/// 生成一个默认SPAN
/// </summary>
public class DefaultCtl:WebControl
{
/// <summary>
/// 事件1
/// </summary>
/// <param name="writer"></param>
public override void RenderControl(HtmlTextWriter writer)
{
base.RenderControl(writer);
}
/// <summary>
/// 事件2-保护的方法
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
/// <summary>
/// 事件3
/// </summary>
/// <param name="writer"></param>
public override void RenderBeginTag(HtmlTextWriter writer)
{
base.RenderBeginTag(writer);
}
/// <summary>
/// 事件4--保护的方法
/// </summary>
/// <param name="writer"></param>
protected override void RenderContents(HtmlTextWriter writer)
{
base.RenderContents(writer);
}
/// <summary>
/// 事件5
/// </summary>
/// <param name="writer"></param>
public override void RenderEndTag(HtmlTextWriter writer)
{
base.RenderEndTag(writer);
}
}
三、Render呈现控件的三种方式
protected override void RenderContents(HtmlTextWriter writer)
{
//方式一,通过HtmlTextWriterAttribute添加属性
writer.AddAttribute(HtmlTextWriterAttribute.Id, "双烟弥勒");
writer.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.baidu.com");
writer.AddAttribute(HtmlTextWriterAttribute.Target, "_blank");
writer.AddAttribute(HtmlTextWriterAttribute.Title, "双烟弥勒");
writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "#ff0000");
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "hand");
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "20px");
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write("方式一,通过HtmlTextWriterAttribute添加属性");
writer.RenderEndTag();
writer.WriteBreak();
//方式二,直接输出HTML代码
writer.AddStyleAttribute("id", "JZTL");
writer.AddStyleAttribute("href", "http://www.google.com");
writer.AddStyleAttribute("target", "_blank");
writer.AddAttribute("title", "双烟弥勒");
writer.AddStyleAttribute("cursor", "hand");
writer.AddStyleAttribute("color", "#00ff00");
writer.AddStyleAttribute("font-size", "40px");
writer.RenderBeginTag("a");
writer.Write("方式二,直接输出HTML代码");
writer.RenderEndTag();
writer.WriteBreak();//br
//方式三,使用服务器控件的RenderControl 方法
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes.Add("href", "http://www.sina.com");
a.Attributes.Add("target", "_blank");
a.Style.Add(HtmlTextWriterStyle.FontSize, "30px");
a.InnerHtml = "方式三,使用服务器控件的RenderControl 方法";
a.RenderControl(writer);
}
四、AddAttributesToRender方法【重载最外层如span的属性】
/// <summary>
/// 重写默认的span标记
/// </summary>
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Table;
}
}
/// <summary>
/// 重写其table的属性
/// </summary>
/// <param name="writer"></param>
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
base.AddAttributesToRender(writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("表格中内容");
writer.RenderEndTag();
writer.RenderEndTag();
}