Загрузка CSS и JS на странице по умолчанию внутри подпапки - PullRequest
0 голосов
/ 16 марта 2012

У меня есть веб-приложение ASP.NET, размещенное на выделенном сервере Windows.В моем приложении много папок.Чтобы упростить мою проблему, скажем, у меня есть такой сценарий:

  • папка
    • default.aspx
    • css
    • js

Я хотел бы установить default.aspx в качестве моей страницы по умолчанию, то есть, когда пользователь вводит domain.com, показывается default.aspx.

Для того, чтобы сделать это,Я отредактировал мой файл web.config, и он работает.Проблема заключается в стилях и JavaScript.

Мой default.aspx содержит это:

<script type="text/javascript" src="js/xxxx.js"></script>
<link href="css/styles.css" rel="stylesheet" type="text/css" />

Так что стили и javascripts не найдены.

Я действительно не хочу удалять папку и ставитьвсе в корне, и просто переместить страницу default.aspx на самом деле не вариант, так как у меня есть MasterPage.

Ответы [ 4 ]

0 голосов
/ 16 марта 2012

Для проектов ASP.NET WebForms и MVC я настоятельно рекомендую перейти на Client Dependency Framework и позволить ему обрабатывать зависимости вашей страницы.

Для ваших двух зависимостей вы просто добавляете эти объявления на страницу:

<CD:CssInclude ID="CssIncludeStyles" runat="server" FilePath="~/css/styles.css" />
<CD:JsInclude ID="JsIncludeXXXX" runat="server" FilePath="~/js/xxx.js" />

Это уже чище, чем звонить this.ResolveUrl на каждом депе. декларация.

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

Самый простой способ начать с зависимости клиента - добавить его через NuGet в проект веб-сайта ASP.NET.

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

0 голосов
/ 16 марта 2012

Если вы хотите сделать ссылку на элементы, вы можете использовать путь от корня сайта. Просто поставьте косую черту перед дорожкой .. вот так:

 <link rel="stylesheet" href="/css/webedit.css" type="text/css" />
0 голосов
/ 16 марта 2012

Вы можете использовать Page.ResolveUrl метод для получения правильных путей:

<script type="text/javascript" src='<%= Page.ResolveUrl("~/js/xxxx.js") %>'></script>
<link href='<%= Page.ResolveUrl("~/css/styles.css")' rel="stylesheet" type="text/css" />

Для получения дополнительной информации см. Указание путей для ресурсов .

РЕДАКТИРОВАТЬ : в комментарии упоминается, что это не работает для таблиц стилей.Это частично правда.Он не будет работать для серверной части, но будет работать для клиентских элементов.

Кажется, ваш <link> элемент находится внутри тега <head> на стороне сервера, это означает ASP.NET обрабатывает <link> внутри <head> как серверные элементы управления, даже если вы не указали атрибут runat="server" .Поэтому вам не нужно использовать серверную конструкцию в этом случае:

<link href="~/css/styles.css" rel="stylesheet" type="text/css" />
0 голосов
/ 16 марта 2012

используйте resolUrl или путь от root для разрешения местоположений js и css

    <script src='<%= this.ResolveUrl("~/js/xxxx.js") %>' type="text/javascript"></script>
    <link href="~/css/styles.css" rel="stylesheet" type="text/css" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...