【发布时间】:2010-12-14 09:38:05
【问题描述】:
有谁知道为什么 ASP.NET 4 删除了 ASP 控件上的 ctl00 前缀?
有没有我遗漏的设置?
【问题讨论】:
标签: asp.net
有谁知道为什么 ASP.NET 4 删除了 ASP 控件上的 ctl00 前缀?
有没有我遗漏的设置?
【问题讨论】:
标签: asp.net
在 ASP.NET 4.0 中,他们引入了对更简洁的 HTML 语法的支持。你可以阅读它at Scott Gu's blog。如果您想要客户端 ID 的经典模型,您可以调整您的 web.config:
<configuration>
<system.web>
<pages controlRenderingCompatibilityVersion="3.5" />
这将使您的应用程序升级更容易。您可以使用 Control.ClientIDMode 属性更改每个控件(和每个页面)的设置,该属性也可以在 Web 配置中设置:
<configuration>
<system.web>
<pages clientIDMode="AutoID|Predictable|Static|Inherit" />
AutoID 使用经典的 ASP.NET 2.0 模型呈现控件。
【讨论】:
据我所知,由 ASP.NET 决定使用哪个前缀。 使用硬编码的 id 值引用控件是一种不好的做法。
您应该使用 ClientId 属性,该属性将始终为您生成正确的 Id:
<td class="tmarg10" style="width: 150px">
<label for="<%=txtName.ClientID %>">
Name of the mall group :</label>
</td>
<td class="tmarg10">
<asp:TextBox ID="txtName" runat="server" Columns="90" /> <br />
</td>
在上面的例子中,它计算了文本框的正确ID并将其放入标签属性中。这样你就不用再担心控件的id保持不变了。
【讨论】:
如果您只想将“ct100”前缀添加到控件的 ID,请将母版页添加到您的网页。但是上面怎么说,尽量避免在源代码中使用带有控件 ID 的硬代码,并阅读 Metthew 的 cmets 以生成自定义 ID
【讨论】:
【讨论】: