1

在 ASP.NET Web 表单中,当在页面上呈现控件时,每个字段的 ID 都会根据需要使用 ctrl01 进行修改,以确保不会发生冲突(又名 myField 变为 ctrl01$myField 或诸如此类)。

我想知道在哪里可以找到有关算法本身如何工作的详细信息,或者我可以在哪里找到它。我假设 INamingContainer 与此有​​关 - 但可惜我找不到实际决定渲染字段名称的部分。

任何帮助都是极好的!

4

4 回答 4

1

它基于网页的分层布局。但是您可以使用 ClientId 属性来控制它。

所以用户控件中的文本框将被命名为 ctrl01#textboxname (就像你在帖子中所说的那样)

于 2011-04-09T19:44:40.023 回答
1

您可能正在寻找这篇 msdn 文章

于 2011-04-09T19:49:57.200 回答
1

它将自己的名称与您的原始 ID 连接起来。

在 ASP.NET 4 中,您可以抑制这种连接并以三种不同的方式保留您自己的 id:

  • 每个服务器控件都有一个名为的属性clientIdMode,您可以将其设置为Static
  • 您还可以clientIdMode在页面指令中设置这将影响页面上的所有控件。
  • 或者您可以将其设置web.config为影响所有页面中的所有控件。(除非页面或控件设置为不同的clientIdMode

注意:如果您使用的是 AJAX 控件工具包,则需要将作为工具包一部分的控件设置clientIdModePredictive

于 2011-04-09T20:02:20.447 回答
0

除了其他答案之外,如果您使用的是 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

于 2011-04-09T19:54:36.717 回答