在 ASP.NET Web 表单中,当在页面上呈现控件时,每个字段的 ID 都会根据需要使用 ctrl01 进行修改,以确保不会发生冲突(又名 myField 变为 ctrl01$myField 或诸如此类)。
我想知道在哪里可以找到有关算法本身如何工作的详细信息,或者我可以在哪里找到它。我假设 INamingContainer 与此有关 - 但可惜我找不到实际决定渲染字段名称的部分。
任何帮助都是极好的!
在 ASP.NET Web 表单中,当在页面上呈现控件时,每个字段的 ID 都会根据需要使用 ctrl01 进行修改,以确保不会发生冲突(又名 myField 变为 ctrl01$myField 或诸如此类)。
我想知道在哪里可以找到有关算法本身如何工作的详细信息,或者我可以在哪里找到它。我假设 INamingContainer 与此有关 - 但可惜我找不到实际决定渲染字段名称的部分。
任何帮助都是极好的!
它基于网页的分层布局。但是您可以使用 ClientId 属性来控制它。
所以用户控件中的文本框将被命名为 ctrl01#textboxname (就像你在帖子中所说的那样)
您可能正在寻找这篇 msdn 文章。
它将自己的名称与您的原始 ID 连接起来。
在 ASP.NET 4 中,您可以抑制这种连接并以三种不同的方式保留您自己的 id:
clientIdMode
,您可以将其设置为Static
clientIdMode
在页面指令中设置这将影响页面上的所有控件。web.config
为影响所有页面中的所有控件。(除非页面或控件设置为不同的clientIdMode
注意:如果您使用的是 AJAX 控件工具包,则需要将作为工具包一部分的控件设置clientIdMode
为Predictive
除了其他答案之外,如果您使用的是 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