在asp.net中设置ClientID

时间:2009-09-15 17:34:00

标签: asp.net client-side asp.net-controls clientid

是否可以设置任何asp.net服务器控件的ClientID?我怎么能这样做?

7 个答案:

答案 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。因此,您可以从代码隐藏中获得某种程度的控制。