2013-09-29 2 views
2

Для примера, если у меня есть это в моей ASPX файле:HTML HREF, как установить относительный путь из корня (без использования «..» для перемещения вверх)?

<link href="../Css/StyleSheet.css" rel="stylesheet" type="text/css" /> 

с «..» указывают идти вверх на один уровень каталогов.

Всякий раз, когда я перемещаю страницу aspx на другой уровень каталога, я должен установить ее снова. Как установить его так, чтобы он был относительно корня папки проекта? (Так что либо если перенести папку проекта в другое место и/или перемещение страницы ASPX для верхнего/нижнего уровня каталогов, я не придется устанавливать его снова

ответ

0

Вы можете начать свой URL, с /:

<link href="/Css/StyleSheet.css" rel="stylesheet" type="text/css" /> 
+0

Я пробовал это, он работает в режиме отладки в Visual Studio, но когда я опубликовал его в IIS, это не сработало. –

+0

@ J-CSharper Это должно сработать. Вы уверены, что используете правильный путь (например, */StyleSheet.css * или */Foo/Bar/Css/StyleSheet.css *)? – Oriol

+0

Это абсолютный путь: MyProjectName/Css/StyleSheet.css –

9

Вы должны быть в состоянии использовать Page.ResolveUrl:

<link href="<%= Page.ResolveUrl("~/Css/StyleSheet.css") %>" rel="stylesheet" type="text/css" /> 

Или, возможно, превратить его в серверный элемент управления и быть в состоянии использовать тильду:

<link href="~/Css/StyleSheet.css" runat="server"> 
+0

Я использовал ваш метод, и это то, что я получил. Коллекция элементов управления не может быть изменена, поскольку элемент управления содержит блоки кода (то есть <% ... %>) " –

+0

У вас может быть <% %> блоков в заголовке вашей страницы или на главной странице, если вы ее используете. Вы должны иметь возможность заменить блок кода <% # вместо <% =, но вам нужно будет добавить Page.Header.DataBind(); в загрузке страницы. Второй метод должен работать без проблем, и тильда сообщит, что ссылка начнется с корня сайта. –

+0

Я попробовал второй, и он не работает. Первый слишком сложный. –