我们最近从 .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"
了向后兼容性。
我们可以ClientID="static"
像以前一样手动为每个控件赋予正确的 id,但这对我们来说需要完成很多工作。
我想了解为什么 INamingContianer 没有像以前在旧版本的 .NET 中那样呈现。
提前致谢。