【问题标题】:Need workaround for .Net Master Page Name Mangling需要.Net Master Page Name Mangling 的解决方法
【发布时间】:2009-11-15 07:18:13
【问题描述】:
我正在评估将基于旧框架集的 asp.net 网站转换为使用母版页。唯一让我退缩的是更新每个页面以处理名称修改所需的大量工作。我的大部分问题都与 javascript 引用硬编码的 Id 相关。
有没有办法让我告诉 ASP.Net 对于我不希望发生重整的特定内容区域。让我来处理名称冲突。
注意
我知道.Net 4.0 对此有一个解决方案detailed here。我想要一个不涉及等待的解决方案,需要.Net 3.5。
更新
对于母版页的开源替代方案有什么建议可以让我在 .Net 4.0 之前顺利完成吗?或者如何解决问题的黑客工作解决方案。谢谢
【问题讨论】:
标签:
c#
asp.net
javascript
master-pages
asp.net-3.5
【解决方案1】:
唯一“支持”的方法是不使用定义为“runat="server"”的元素。否则,.NET 4.0 是第一次为您提供一致的、受支持的机制来进行此更改。
您也许可以通过其他方式解决这个问题,但没有什么是容易/快速实施的。
【解决方案2】:
一种方法是使用一些服务器生成的 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 包括母版页、嵌套控件等所做的任何修改。