C# 需要解决.Net母版页名称损坏的问题

C# 需要解决.Net母版页名称损坏的问题,c#,asp.net,javascript,master-pages,asp.net-3.5,C#,Asp.net,Javascript,Master Pages,Asp.net 3.5,我正在评估将旧的基于框架集的asp.net网站转换为使用母版页。唯一让我望而却步的是,要更新每个页面以处理名称损坏,需要做大量的工作。我的大多数问题都与javascript引用硬编码Id有关 是否有一种方法可以让我告诉ASP.Net,对于我不希望发生损坏的特定内容区域。让我来处理名字冲突 注意 我知道.NET4.0对此有一个解决方案。我想要一个不需要等待的解决方案,需要是.NET3.5 更新 关于母版页的开源替代方案有什么建议可以让我一直到.NET4.0吗?或者用一个黑客作业解决方案来解决这个问

我正在评估将旧的基于框架集的asp.net网站转换为使用母版页。唯一让我望而却步的是,要更新每个页面以处理名称损坏,需要做大量的工作。我的大多数问题都与javascript引用硬编码Id有关

是否有一种方法可以让我告诉ASP.Net,对于我不希望发生损坏的特定内容区域。让我来处理名字冲突

注意

我知道.NET4.0对此有一个解决方案。我想要一个不需要等待的解决方案,需要是.NET3.5

更新

关于母版页的开源替代方案有什么建议可以让我一直到.NET4.0吗?或者用一个黑客作业解决方案来解决这个问题。谢谢,唯一“受支持”的方法是不要使用定义为“runat=“server”的元素。否则,.NET 4.0将是您第一次获得一致且受支持的机制来进行此更改


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

一种方法是使用一些服务器生成的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>

函数RegObj(clientId,anId){
eval('window.'+clientId+'=document.getElementById(anId)');
}
RegObj('mytext','');
mytext.innerHTML='我的文本';
此报告的ID包括母版页、嵌套控件等造成的任何损坏。

Dupe: