ASP.NET 2.5在控件之前加上 ctl00 前缀,而ASP.NET 4则不加前缀 ctl00。

16
有人知道为什么ASP.NET 4在ASP控件中取消了ctl00前缀吗?我有没有忽略某个设置?
4个回答

30
在ASP.NET 4.0中,他们引入了对更干净的HTML语法的支持。你可以在Scott Gu的博客上了解相关信息。如果你想使用Client IDs的传统模型,你可以调整你的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 模型呈现控件。


在我的情况下,这可能是特殊的,但对于所有尝试过此方法但第一次未成功的人,请同时尝试添加clientIDMode属性。 <configuration> <system.web> <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> - TypingPanda

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并将其放入标签属性中。通过这种方式,您将不再担心控件的ID是否相同。

0
这不是一个设置,而是微软简化容器内控件ID转换为客户端的决定。
这里有一篇由Scott Guthrie撰写的博客文章,解释了这些变化的原因:

干净、基于标准、友好CSS的标记


0

如果您只想将“ct100”前缀添加到控件的ID中,请在WebPage中添加Master页面。但是,如上所述,请尽量避免在源代码中使用硬编码的控件ID,并阅读Metthew的评论以生成自定义ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接