Нужен обходной путь для .Net Master Page Name Mangling - PullRequest
4 голосов
/ 15 ноября 2009

Я оцениваю конвертацию старого сайта asp.net на базе фреймов для использования с мастер-страницами. Единственное, что меня сдерживает, - это огромный объем работы, который потребуется для обновления каждой страницы, чтобы справиться с искажениями имен. Большинство моих проблем связаны со ссылками на javascript с жестко закодированными идентификаторами.

Есть ли способ сообщить мне ASP.Net, что для определенной области контента я не хочу, чтобы происходило искажение. Оставьте это мне, чтобы иметь дело с конфликтами имен.

Примечание

Я знаю, что .Net 4.0 имеет решение для этого, как подробно здесь . Мне нужно решение, которое не требует ожидания, должно быть .Net 3.5.

Обновление

Какие-нибудь предложения по альтернативам шедеврам с открытым исходным кодом, которые дойдут до .Net 4.0? Или как насчет решения хакерской работы, чтобы обойти искажение. Спасибо

Ответы [ 2 ]

3 голосов
/ 15 ноября 2009

Единственный "поддерживаемый" способ сделать это - НЕ использовать элементы, которые определены как "runat =" server "". В противном случае .NET 4.0 впервые дает вам согласованный поддерживаемый механизм для внесения этого изменения.

Возможно, вы сможете обойти это другими способами, но ничего, что не будет легко / быстро реализовать.

0 голосов
/ 15 ноября 2009

Один из способов сделать это - использовать некоторый сгенерированный сервером JavaScript, который связывает сгенерированный идентификатор с более понятным именем. Вы можете получить доступ к созданному идентификатору, используя свойство ClientID. Например:

<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>

Указанный идентификатор включает в себя любые искажения, выполненные мастер-страницами, вложенными элементами управления и т. Д.

...