是否可以设置任何asp.net服务器控件的ClientID
?我怎么能这样做?
答案 0 :(得分:19)
好消息是,在VS 2010 .Net 4中,您将拥有complete control over Client IDs!
仍然可以使用当前版本的.Net。我假设您需要JavaScript的ID。如果是这样,只需获取ID:
<script type="text/javascript">
var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>
答案 1 :(得分:3)
那是不可能的。 ClientID由ASP.NET生成。来自MSDN:
ClientID值由生成 连接的ID值 控制和它的UniqueID值 父母控制。如果ID值为 未指定控件,a 使用自动生成的值。
答案 2 :(得分:3)
我建议不要这样做,除非你确定要这样做,但有办法。您可以从服务器控件中覆盖ClientID
属性。
public override string ClientID
{
get { return "whatever"; }
}
但正如其他人所说,你不能从外面做到这一点。
答案 3 :(得分:1)
即使我认为在Visual Studio 2008中也不可能。因为Control.ClientID属性只有get方法
编辑:但在Visual Studio 2010(.Net 4.0)中,它是可能的
答案 4 :(得分:1)
ASP.NET 4在每个控件上都有ClientIDMode属性。 如果您想完全关闭ClientID ,您可以使用this trick - 它适用于任何非回发控制
答案 5 :(得分:0)
这是一个ASP.NET 4.0功能。
答案 6 :(得分: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。因此,您可以从代码隐藏中获得某种程度的控制。