我注意到如果我将一个TextBox添加到页面中,而没有为其分配ID属性,则会根据该呈现页面的控件层次结构自动生成此属性。
我正在创建一个在一个页面上多次使用的自定义控件(因此难以对ID进行硬编码)。
ASP.NET是否有一种方法可用于为每个控件生成“唯一”ID?
答案 0 :(得分:3)
你已经回答了自己的问题 - 不要指定一个,它会为你生成。
感兴趣的可能是this post on Scott Guthrie's blog,它描述了ASP.NET 4中可用的“新”ClientIdMode
:
- AutoID - 在.NET 3.5中恢复输出(自动生成的ID仍然会像ctrl00一样呈现前缀以实现兼容性)
- 可预测(默认) - 修剪任何“ctl00”ID字符串,如果列表/容器控件连接子ID(例如: ID =” ParentControl_ChildControl”)
- 静态 - 对开发人员的完整ID命名控制进行操作 - 无论他们设置为控件的ID是什么呈现的 (例如:id =“JustMyId”)
- 继承 - 按顺序控制以遵循父容器控件的命名行为模式
答案 1 :(得分:0)
如果您愿意,可以覆盖ClientID
或UniqueID
。但使用ClientIDMode
会更好。
public override string UniqueID
{
get
{
return "newid";
}
}
public override string ClientID
{
get
{
return "newid";
}
}