Работа с относительными путями к файлам в ASP.Net и Masterpages

StackOverflow https://stackoverflow.com/questions/283951

Вопрос

Это может быть до боли простой вопрос, за который надо мной будут издеваться, но у меня возникают трудности с использованием путей к файлам в masterpages.Я полагаю, это связано с тем, что если страница в подкаталоге использует masterpage, то путь к файлу указан неверно.

Чтобы исправить это, мне нужно получить путь к файлу из корня, но, похоже, я не могу заставить его работать.

Я пытался:

            <script type="text/javascript" src="~/jQueryScripts/jquery.js"></script> 

и

            <script type="text/javascript" src="../jQueryScripts/jquery.js"></script> 

Ни с тем, ни с другим не повезло!

Есть какие-нибудь идеи о том, как я могу сообщить ему, чтобы получить путь к файлу из корня?Спасибо :)

Это было полезно?

Решение

Я просто предполагаю, что под filepath вы на самом деле подразумеваете URL (или uri, я забыл, какой из них является частичным).

Без символа ~ первый пример должен сработать. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script> приведет к тому, что браузер запросит http://www.example.com/jQueryScripts/jquery.js (где www.example.com находится ваш домен).

Другие советы

Я верю, что вам нужно иметь runat=server в <head> метка из MasterPage чтобы эта перебазировка URL сработала.

<head runat="server">

Во-первых, тильда впереди - это asp.net вещь для использования в серверных элементах управления и не будет работать в базовом HTML.

Не вдаваясь в подробные объяснения, вы могли бы просто использовать косую черту (/) впереди и включить название веб-приложения, если это не корневой сайт.

Или вы могли бы поместить код на свою главную страницу для динамического включения скриптов и позволить ему обрабатывать пути.Нравится:

    public void AddJavascript(string javascriptUrl)
    {   
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes.Add("type", "text/javascript");
        javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
        script.Attributes.Add("src", ResolveUrl(javascriptUrl));
        Page.Header.Controls.Add(script);
    }

Приведенный выше код также добавляет версию сборки.Я использую это в основном для разработки, поэтому мои файлы javascript обновляются всякий раз, когда я создаю.

Вы могли бы использовать Страница.ResolveUrl способ обойти это

например:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top