是否可以设置ClientID
任何 asp.net 服务器控件?我怎样才能做到这一点?
7 回答
好消息是在 VS 2010 .Net 4 中,您将完全控制客户端 ID!
仍然对于当前版本的 .Net,您可以应付。我假设您需要 JavaScript 的 ID。如果是这样,只需像这样获取 ID:
<script type="text/javascript">
var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>
那是不可能的。ClientID 由 ASP.NET 生成。来自MSDN:
ClientID 值是通过连接控件的 ID 值和其父控件的 UniqueID 值生成的。如果未指定控件的 ID 值,则使用自动生成的值。
除非您确定要这样做,否则我建议您不要这样做,但是有办法。ClientID
您可以从服务器控件中覆盖该属性。
public override string ClientID
{
get { return "whatever"; }
}
但正如其他人所指出的,你不能从外面做到这一点。
甚至我认为这在 Visual Studio 2008 中是不可能的。因为Control.ClientID属性只有 get 方法
编辑:但在 Visual Studio 2010(.Net 4.0) 中是可能的
ASP.NET 4 在每个控件上都有 ClientIDMode 属性。如果你想完全关闭 ClientID,你可以使用这个技巧——它适用于任何非回发控件
这是 ASP.NET 4.0 的一项功能。
对于 VS 2010,.NET 4.0:
如果你只是尝试设置ctrl.ClientID="stringID"
,你会得到一个错误,说 ClientID 是只读的。您可以使用ClientIDMode控制 ClientID 的值- 它定义了设置 ClientID 的算法:
ctrl.ID = "IDstring";
ctrl.ClientIDMode = ClientIDMode.Static; //ClientID value is set to the value of ID
html 标记将使用控件的 ID 标记控件的 html。因此,您可以从代码隐藏中获得一定程度的控制。