Я пытаюсь добавить ссылку на скрипт для jQuery на моей главной странице, чтобы она работала для любой страницы. В настоящее время она выглядит следующим образомПроблемы с главной страницей и файлом ASP.Net
<script type="text/javascript" src="jquery.js"></script>
Проблема заключается в том, что путь всегда относителен исполняющая страницу ASPX так что это будет работать, только если файл «jquery.js» находится в той же папке. Для того, чтобы сделать его работу я должен изменить строку:
<script type="text/javascript" src="../../jquery.js"></script>
Это, очевидно, меньше, чем идеал, потому что он будет работать только для страниц, которые являются два уровня глубины от корневой папки. Если я попробую следующее, IIS выдает ошибку об неожиданном символе.
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
Любые идеи?
EDIT: Я забыл упомянуть и о том, что сценарий должен быть в голове тега
Текущий верхний ответ бросает «ASP.NET Ajax на стороне клиента базы не удалось загрузить» ошибка когда я добавлю его на мою главную страницу. Его выбросили из javascript, а не в .Net-компилятор. Если я переведу ScriptManager в раздел главы, где он должен быть, я получаю ошибку компиляции в ScriptManager, который должен находиться внутри тега формы.
Третий ответ бросает «недопустимые символы в пути.» Исключение из компилятора
EDIT 2: Когда я добавить эту строку в моей голове теге я получаю эту ошибку из IIS.
Коллекция Controls не может быть изменена, поскольку контроль содержит блоки кода (т.е. <% ...%>)
РЕШИТЬ: Я принял отредактированный ответ от ответа ниже, и поместить его внутри жерех: ContentPlaceHolder элемент
Да, это очень рекомендуемый метод во многих книгах ASP.NET, которые я написал при работе с путями в masterpages. – Kezzer
FYI, мой коллега, и я просто попробовал это. Похоже, что это не работает во вложенном сценарии главной страницы * на родительской главной странице *. Однако переместить его на главную страницу ребенка сделал трюк. – technomalogical
Это работало для меня почти на всех моих страницах, но на 2 страницы, которые взорвались бы с определенным исключением: «Коллекция элементов управления не может быть изменена, потому что элемент управления содержит код». Решение состоит в том, чтобы сменить скрипт в заголовке из кода response.write на блок оценки данных (т. Е. - изменить <% = на <% #). Я бы поставил под угрозу, что это попытка некоторых попыток MS остановить атаки HTTP-заголовков. Лучшее объяснение этого простого исправления можно найти по адресу: http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/ – Jagd