在asp.net中设置ClientID
是否可以设置任何 ASP.NET 服务器控件的 ClientID
?我该怎么做?
Is it possible to set the ClientID
of any asp.net server control? How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
好消息是,在 VS 2010 .Net 4 中,您将拥有 完全控制客户端 ID!
对于 .Net 的当前版本,您仍然可以按时完成。我假设您需要 JavaScript 的 ID。如果是这样,只需获取 ID,如下所示:
The good news is that in VS 2010 .Net 4, you'll have complete control over Client IDs!
Still for the current versions of .Net, you can make due. I assume you need the ID for JavaScript. If so, just get the ID like so:
我建议不要这样做,除非你确定你想这样做,但有一种方法。您可以从服务器控件中覆盖
ClientID
属性。但正如其他人指出的那样,你无法从外部做到这一点。
I would advice against doing this unless you are sure you want to do it, but there is a way. You can override the
ClientID
property from within the server control.But as others have noted, you can't do it from outside.
那是不可能的。 ClientID 由 ASP.NET 生成。来自 MSDN:
That's not possible. The ClientID is generated by ASP.NET. From MSDN:
即使我认为这在 Visual studio 2008 中也是不可能的。因为 Control.ClientID 属性有仅获取方法
编辑:但在 Visual studio 2010(.Net 4.0) 中这是可能的
Even i think it is not possible in Visual studio 2008 . Because Control.ClientID Property has only get method
Edit :But in Visual studio 2010(.Net 4.0) it is possible
ASP.NET 4 在每个控件上都有 ClientIDMode 属性。
如果您想完全关闭 ClientID,您可以使用这个技巧 - 它适用于任何非回发控制
ASP.NET 4 has ClientIDMode property on each control for that.
If you want to turn off ClientID completely you can use this trick - it works for any non-postback control
这是 ASP.NET 4.0 的一项功能。
This is an ASP.NET 4.0 feature.
对于 VS 2010、.NET 4.0:
如果您只是尝试设置
ctrl.ClientID="stringID"
,您将收到错误消息,指出 ClientID 是只读的。您可以使用 ClientIDMode - 定义设置 ClientID 的算法:html 标记将使用控件的 ID 来标记控件的 html。因此,您可以从代码隐藏中进行一定程度的控制。
For VS 2010, .NET 4.0:
If you just try to set
ctrl.ClientID="stringID"
you will get an Error, saying that ClientID is read only. You can control the value of ClientID using ClientIDMode - which defines the algorithm with which ClientID is set:The html markup will mark your control's html with the control's ID. Thus you have some degree of control from the code-behind.