有谁知道为什么ASP.NET 4在ASP控件上删除了ctl00
前缀?
我错过了一个设置吗?
答案 0 :(得分:29)
在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模型呈现控件。
答案 1 :(得分:1)
据我记得,它决定使用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并将其放入label属性中。通过这种方式,您将不再担心保持控件的相同ID。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您只想在控件的ID中添加“ct100”前缀,请将Master页面添加到WebPage。但是如上所述,尽量避免在源代码中使用带有控件ID的硬编码,并阅读Metthew对生成自定义ID的注释