这个Window类的渲染功能
protected override void RenderContents(HtmlTextWriter wr)
{
wr.AddAttribute("runat", "server",true);
wr.AddAttribute("id", this.UniqueID, false);
wr.RenderBeginTag(HtmlTextWriterTag.Div);
wr.RenderEndTag();
wr.WriteLine();
base.RenderContents(wr);
}
protected override void RenderContents(HtmlTextWriter wr)
{
wr.AddAttribute("runat", "server",true);
wr.AddAttribute("id", this.UniqueID, false);
wr.RenderBeginTag(HtmlTextWriterTag.Div);
wr.RenderEndTag();
wr.WriteLine();
base.RenderContents(wr);
}
(cc1:Window ID="Window1" runat="server" )
(div) runat="server" id="aaaa"(/div)
答案 0 :(得分:1)
你的问题中没有一个人真正陈述过一个问题。无论如何,我认为您希望自定义控件呈现为<div runat="server">
。
public class Window : WebControl {
public Window() : base(HtmlTextWriterTag.Div) {}
protected override void AddAttributesToRender(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Id, UniqueID);
}
}
runat="server"
仅在解析您的HTML代码时使用,并且在您的控件中没有用处。答案 1 :(得分:0)
我不确定您的使用示例是否只是在发布时的拼写错误和格式错误,或者实际上是这样使用它(例如,我知道您发布了<...>
{{1这不是我的问题)。
您应该首先将控件类实现为suggested by Simon Svensson。
然后,如果你想让id =“aaaa”的div成为你的控件div标签中的html标签,你应该像这样使用它(注意结尾(...)
):
</cc1:Window>
<cc1:Window ID="Window1" runat="server">
<div id="aaaa">Text content here</div>
</cc1:Window>
正如Simon所说,<div id="Window1">
<div id="aaaa">Text content here</div>
</div>
主要用于服务器控件,对渲染的HTML控件没有意义。