Ich erstelle ein Steuerelement, das auf ScriptControl basiert, und ich überschreibe die Render
Methode wie folgt:
protected override void Render(HtmlTextWriter writer)
{
RenderBeginTag(writer);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.Write("This is a test.");
writer.RenderEndTag();
RenderEndTag(writer);
}
Meine Frage ist, was, wenn ich das Div ein ID-Attribut zuweisen möchten und haben es eindeutig auf der Seite, auch wenn es mehrere Instanzen meiner Steuerung sind?
Ich habe den Code anderer Leute gesehen, der dies tut:
writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID + "_divTest");
Das verhindert Namenskonflikte zwischen Instanzen meines Steuerelements, aber was ist, wenn ich bereits ein div an anderer Stelle auf der Seite erstellt habe, das zufällig die gleiche ID hat?
Ich habe auch von der Implementierung von INamingContainer gehört. Würde das hier zutreffen? Wie könnte ich es verwenden?
UPDATE :
Ich habe dieses Problem durch Überschreiben von CreateChildControls
und das Hinzufügen tatsächlicher Steuerelemente, im Gegensatz zum direkten Rendern von HTML. In diesem Fall erfüllt INamingContainer seine Aufgabe. Allerdings bin ich immer noch neugierig, wenn es eine Möglichkeit, mein ursprüngliches Problem (eindeutige IDs für direkt gerenderte Elemente) zu lösen.