.net — относительный URL для javascript src?

#.net

#.net

Вопрос:

Я хочу включить файл javascript следующим образом

 <script type="text/javascript" runat="server" src="~/file.js"></script>
  

Идея в том, что я хочу включить file.js через относительный путь вместо абсолютного пути, и я хочу .NET, чтобы определить соответствующий каталог (ie. это ./ или ../, или ../ .. / etc …).

Но когда я пробую приведенный выше код, я получаю ошибку компиляции.

Как мне правильно включить файл javascript?

Комментарии:

1. Вы используете MVC или ванильный ASP.Net ?

Ответ №1:

Вы можете попробовать это…

Razor:

 <script type="text/javascript" src="@Url.Content("~/file.js")"></script>
  

Веб-формы:

 <script type="text/javascript" src="<%=Page.ResolveUrl("~/file.js")%>"></script>
  

Комментарии:

1. я получаю ошибку синтаксического анализа с помощью метода webforms: Сообщение об ошибке анализатора: теги сервера не могут содержать <% … %> конструкты.

2. Извините, я случайно оставил runat=»server» в. К сведению, прошло много лет с тех пор, как я работал с WebForms.

3. как я получаю эту ошибку: CS0103: имя «URL» не существует в текущем контексте

4. Хорошо, попробуйте новый пример. Я не понимал, что URL-это специфичная вещь для MVC.

Ответ №2:

Помните, что путь-‘относительность’ наиболее важен для браузера. Пути должны быть относительно адреса СТРАНИЦЫ, на которую вы смотрите. Вот почему элементы управления и главные страницы, которые могут находиться не в тех же папках, что и страницы, которые их используют, идут на все, чтобы манипулировать путями ресурсов, которые они включают, чтобы они работали.

Итак, в вашем случае удалите часть runat= и если file.js находится в корне приложения, с которым вы должны быть готовы работать.

Комментарии:

1. но если я просто включу, в том числе из Default.aspx работает, но включение из подкаталога / Default.aspx не работает

Ответ №3:

Если вы используете MVC, вы можете использовать

 <script type="text/javascript" src="@Url.Content("~/file.js")" />