1

我注意到如果我将 TextBox 添加到页面,但没有为其分配 ID 属性,则此属性会根据该呈现页面的控制层次结构自动生成。

我正在创建一个要在一个页面上多次使用的自定义控件(所以硬编码一个 ID 是行不通的)。

ASP.NET 是否有一种方法可以用来为这些控件中的每一个生成一个“唯一”ID?

4

2 回答 2

3

您已经回答了自己的问题 - 不要指定一个,它将为您生成。

有趣的可能是Scott Guthrie 博客上的这篇文章ClientIdMode,它描述了ASP.NET 4 中可用的“新” :

  • AutoID — 像在 .NET 3.5 中一样呈现输出(自动生成的 ID,仍会呈现 ctrl00 等前缀以实现兼容性)
  • 可预测(默认) - 修剪任何“ctl00” ID 字符串,如果列表/容器控件连接子 ID(例如:id=”ParentControl_ChildControl”)
  • 静态——将完整的 ID 命名控制权交给开发人员——无论他们设置为控件的 ID 是什么,都会呈现(例如:id=”JustMyId”)
  • 继承——告诉控件遵循父容器控件的命名行为模式
于 2012-05-29T14:41:08.370 回答
0

如果您愿意,您可以覆盖ClientID或。UniqueID但使用ClientIDMode更好。

public override string UniqueID
{
    get
    {
        return "newid";
    }
}

public override string ClientID
{
    get

    {
        return "newid";
    }
}
于 2012-05-29T14:46:13.560 回答