Wir haben kürzlich von .NET 3.5SP1 auf .NET 4.5 aktualisiert. Wir haben festgestellt, dass die Steuerelemente, die die INamingContainer-Schnittstelle verwenden, ihre ClientID jetzt anders darstellen.
Die MS-Dokumentation besagt, dass der INamingContainer einen neuen ID-Namensraum innerhalb der Hierarchie eines Steuerelements erstellt.
Mit dem alten Verhalten würden unsere IDs wie folgt aussehen:
<input id="MyContainer_txtName" />
aber wir bekommen jetzt:
<input id="ctl00_ctl00_c_contentHolder_MyContainer_txtName" />
die das Präfix ct100 und den Namen des Inhaltsinhabers enthält.
Eine Beispielklasse, die dies verwendet, wäre:
public class MyTextBox : System.Web.UI.WebControls.TextBox, INamingContainer
{
}
Wir haben festgelegt ClientIDMode="AutoID"
für Abwärtskompatibilität.
Wir könnten ClientID="static"
jedem Steuerelement manuell die richtige Kennung zuzuweisen, aber das wäre für uns eine Menge Arbeit, die wir erledigen müssten.
Ich würde gerne verstehen, warum INamingContianer nicht so gerendert wird, wie es früher in der älteren Version von .NET war.
Vielen Dank im Voraus.