代码之家  ›  专栏  ›  技术社区  ›  Ryu

需要解决.NET母版页名称损坏的方法

  •  4
  • Ryu  · 技术社区  · 15 年前

    我正在评估如何将基于框架集的旧ASP.NET网站转换为使用母版页。唯一让我退缩的是,要更新每一个页面来处理名称损坏需要做大量的工作。我的大部分问题是javascript引用硬编码id。

    我有没有办法告诉asp.net,对于某个特定的内容区域,我不希望发生损坏。让我来处理名字冲突。

    注释

    我知道.net 4.0有一个解决方案 detailed here . 我想要一个不需要等待的解决方案,需要是.net 3.5。

    更新

    有什么建议可以让我在.net 4.0之前完成母版页的开源替代品吗?或者用一个黑客解决方案来解决这个问题。谢谢

    2 回复  |  直到 15 年前
        1
  •  3
  •   Mitchel Sellers    15 年前

    唯一“受支持”的方法是不使用定义为“runat=”server“”的元素。否则,.net 4.0将是第一次为您提供一致的、受支持的机制来进行此更改。

    你也许可以通过其他方式来解决这个问题,但是没有什么是容易/快速实现的。

        2
  •  0
  •   RickNZ    15 年前

    一种方法是使用服务器生成的javascript将生成的id与更友好的名称相关联。您可以使用clientid属性访问生成的id。例如:

    <asp:Label runat="server" ID="myInfo" Text="Initial text" />    
    <script type="text/javascript">
      function RegObj(clientId, anId) {
        eval('window.' + clientId + ' = document.getElementById(anId)');
      }
      RegObj('mytext', '<%= myInfo.ClientID %>');
      mytext.innerHTML = 'my text';
    </script>
    

    此报告的ID包括母版页、嵌套控件等所做的任何损坏。