【问题标题】:ASP.NET 2.5 prefixing ctl00 and ASP.NET 4 not prefixing ctl00ASP.NET 2.5 前缀 ctl00 和 ASP.NET 4 不前缀 ctl00
【发布时间】:2010-12-14 09:38:05
【问题描述】:

有谁知道为什么 ASP.NET 4 删除了 ASP 控件上的 ctl00 前缀?

有没有我遗漏的设置?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    在 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 模型呈现控件。

    【讨论】:

    • 在我的情况下,它可能很特别,但对于所有尝试过这种方法但第一次没有工作的人,同时尝试同时放入 clientIDMode 属性。
    【解决方案2】:

    据我所知,由 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保持不变了。

    【讨论】:

      【解决方案3】:

      如果您只想将“ct100”前缀添加到控件的 ID,请将母版页添加到您的网页。但是上面怎么说,尽量避免在源代码中使用带有控件 ID 的硬代码,并阅读 Metthew 的 cmets 以生成自定义 ID

      【讨论】:

        【解决方案4】:

        不是设置,而是 MS 决定简化容器内控件 ID 转换到客户端的方式。

        这是 Scott Guthrie 的 blog post 解释这些变化。其背后的原因:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-29
          • 2019-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-19
          相关资源
          最近更新 更多