最近、.NET 3.5SP1 から .NET 4.5 にアップグレードしました。INamingContainer インターフェイスを使用するコントロールが ClientID を異なる方法でレンダリングするようになったことがわかりました。
MS のドキュメントによると、INamingContainer はコントロールの階層内に新しい ID 名前空間を作成します。
古い動作では、ID は次のようになります。
<input id="MyContainer_txtName" />
しかし、次のようになります。
<input id="ctl00_ctl00_c_contentHolder_MyContainer_txtName" />
ct100 プレフィックスとコンテンツ ホルダー コントロール名が含まれています。
これを使用するクラスの例は次のようになります。
public class MyTextBox : System.Web.UI.WebControls.TextBox, INamingContainer
{
}
ClientIDMode="AutoID"
下位互換性を設定しています。
以前のように、各コントロールに正しい ID を手動で与えることもできClientID="static"
ましたが、これを完了するには多くの作業が必要です。
INamingContianer が以前のバージョンの .NET のようにレンダリングされない理由を理解したいと思います。
前もって感謝します。