Работа с относительными путями к файлам в ASP.Net и мастер-страницах - PullRequest
1 голос
/ 12 ноября 2008

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

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

Я пытался:

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

и

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

Не повезло ни на одном!

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

Ответы [ 5 ]

2 голосов
/ 12 ноября 2008
2 голосов
/ 12 ноября 2008

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

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

1 голос
/ 12 ноября 2008

Вы можете использовать Page.ResolveUrl метод, чтобы обойти это

например:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
1 голос
/ 12 ноября 2008

Прежде всего, тильда впереди - это 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 обновляются при сборке.

1 голос
/ 12 ноября 2008

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

<head runat="server">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...