我正在创建一个基于 ScriptControl 的控件,并且我正在覆盖这样的Render
方法:
protected override void Render(HtmlTextWriter writer)
{
RenderBeginTag(writer);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.Write("This is a test.");
writer.RenderEndTag();
RenderEndTag(writer);
}
我的问题是,如果我想为 div 分配一个 ID 属性并让它在页面上是唯一的,即使我的控件有多个实例,该怎么办?
我看过其他人的代码是这样做的:
writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID + "_divTest");
这将防止我的控件实例之间的命名冲突,但是如果我已经在页面的其他地方创建了一个恰好具有相同 ID 的 div 怎么办?
我还听说过实施 INamingContainer。这适用于这里吗?我怎么能用它?
更新:
我通过覆盖CreateChildControls
和添加实际控件来解决这个问题,而不是直接呈现 HTML。在这种情况下,INamingContainer 就完成了它的工作。但是,我仍然很好奇是否有办法解决我原来的问题(直接渲染元素的唯一 ID)。