Я создаю элемент управления на основе 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 ID и сделать его уникальным на странице, даже если есть несколько экземпляров моего элемента управления?
Я видел код других людей, который делает это:
writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID + "_divTest");
Это предотвратит конфликты имен между экземплярами моего элемента управления, но что если я уже создал div в другом месте на странице, который по совпадению имеет такой же идентификатор?
Я также слышал о реализации INamingContainer. Это применимо здесь? Как я мог это использовать?
UPDATE
Я обошел эту проблему, переопределив CreateChildControls
и добавив фактические элементы управления, в отличие от прямой визуализации HTML. В этом случае INamingContainer делает свою работу. Тем не менее, мне все еще любопытно, есть ли способ решить мою первоначальную проблему (уникальные идентификаторы для непосредственно отображаемых элементов).