ASP.NET Webforms 如何决定控件的 HTML 名称?
在 ASP.NET Web 表单中,当在页面上呈现控件时,将根据需要使用 ctrl01 修改每个字段的 ID,以确保不会发生冲突(又名 myField 变为 ctrl01$myField 或其他)。
我想知道在哪里可以找到有关算法本身如何工作的详细信息,或者我可以在哪里找到它。我假设 INamingContainer 与此有关 - 但可惜我找不到实际决定渲染字段名称的部分。
任何帮助都会很棒!
In ASP.NET web forms when a control is rendered on the page, the ID of each field is modified with the ctrl01 as needed to ensure collisions don't happen (aka myField becomes ctrl01$myField or whatnot).
I was wondering where one might find details on HOW the algorithm itself works, or where it might be I can find it. I am assuming the INamingContainer has something to do with this-- but alas I cannot find the part which actually decides the rendered field name.
Any help would be awesome!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可能正在寻找这篇 msdn 文章。
You are probably looking for this msdn article.
它基于网页的分层布局。但您可以使用 ClientId 属性来控制它。
因此,用户控件中的文本框将被命名为 ctrl01#textboxname (就像您在帖子中所说的那样)
It's based on the hierarchical layout of the webpage. But you can control this with the ClientId property.
So a textbox in a usercontrol will be named ctrl01#textboxname (Like you said in your post)
它将自己的名称与您的原始 ID 连接起来。
在 ASP.NET 4 中,您可以通过三种不同的方式抑制这种串联并保留您自己的 id:
clientIdMode
的属性,您可以将其设置为Static
web.config
中设置它以影响所有页面中的所有控件。 (除非页面或控件设置为不同的clientIdMode
注意:如果您使用 AJAX 控件工具包,则需要将属于工具包一部分的那些控件设置为
clientIdMode
>预测
It concatenates it's own name with your original id.
In ASP.NET 4 you can suppress this concatenation and keep your own id in three different ways:
clientIdMode
which you can set toStatic
clientIdMode
in the page directive which will affect all controls on the page.web.config
to affect all controls in all pages. (Unless the page or control is set to a differentclientIdMode
Note: If you are using AJAX Control Toolkit you will need to set those controls that are part of the toolkit to a
clientIdMode
ofPredictive
除了其他答案之外,如果您使用的是 ASP .NET 4,则您有 更多 控制 结束 它。
看看这些网页
http://www.west-wind.com/ weblog/posts/54760.aspx
http://weblogs.asp .net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx
Apart from the other answers, if you are using ASP .NET 4, you have much more control over it.
Take a look @ these web pages
http://www.west-wind.com/weblog/posts/54760.aspx
http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx