9

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

4

7 回答 7

19

好消息是在 VS 2010 .Net 4 中,您将完全控制客户端 ID

仍然对于当前版本的 .Net,您可以应付。我假设您需要 JavaScript 的 ID。如果是这样,只需像这样获取 ID:

<script type="text/javascript">
    var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>
于 2009-09-15T17:42:36.240 回答
3

那是不可能的。ClientID 由 ASP.NET 生成。来自MSDN

ClientID 值是通过连接控件的 ID 值和其父控件的 UniqueID 值生成的。如果未指定控件的 ID 值,则使用自动生成的值。

于 2009-09-15T17:37:41.883 回答
3

除非您确定要这样做,否则我建议您不要这样做,但是有办法。ClientID您可以从服务器控件中覆盖该属性。

public override string ClientID
{
    get { return "whatever"; }
}

但正如其他人所指出的,你不能从外面做到这一点。

于 2009-09-15T18:16:22.897 回答
1

甚至我认为这在 Visual Studio 2008 中是不可能的。因为Control.ClientID属性只有 get 方法

编辑:但在 Visual Studio 2010(.Net 4.0) 中是可能的

于 2009-09-15T17:41:04.060 回答
1

ASP.NET 4 在每个控件上都有 ClientIDMode 属性。如果你想完全关闭 ClientID,你可以使用这个技巧——它适用于任何非回发控件

于 2011-07-05T08:59:42.013 回答
0

这是 ASP.NET 4.0 的一项功能。

于 2009-09-15T17:41:53.060 回答
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。因此,您可以从代码隐藏中获得一定程度的控制。

于 2013-07-25T14:09:26.473 回答