2010-06-10 2 views
0

У меня есть веб-сайт IIS. Этот веб-сайт содержит другие веб-сайты, поэтому структура такая.Проблема с ссылкой на файлы CSS и JavaScript относительно

\ 
MainWebSite\ 
     Scripts\ 
     CSS\ 
     App1\ 
      Scripts\ 
      CSS\ 
     App2\ 
      Scripts\ 
      CSS\ 

Все сайты являются веб-приложениями ASP.NET MVC.

В MasterPage из App1, я ссылаться на файлы сценариев, как это:

<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.custom.min.js"> 
</script> 

Проблема заключается в том, что теперь он пытается найти файл по адресу: \ сервер \ MainWebSite \ Scripts ....

Как я могу обойти это? Должен ли я помещать все мои скрипты и файлы CSS в корневой каталог, является ли это предпочтительным решением?

+0

Можете ли вы прояснить, что конкретно представляет собой проблема с этим? Существуют ли страницы в разных каталогах, чтобы относительная связь нарушалась? –

+1

Являются ли ваши файлы сценариев и css размещены в MainWebSite \ Scripts? – IsmailS

+0

нет, но я не мог знать, что это так, они, как я добавил сейчас! – Markus

ответ

4

В ASP.NET есть большая функция, которая является частью страницы объекта:

ResolveUrl(String) 

Используется при пропускании в относительной строке, но лучшая часть вы можете использовать ~ символизировать корень вашего сайта:

<script type="text/javascript" src='<%=ResolveURL("~/PATH_FROM_ROOT/Scripts/jquery-ui-1.8.custom.min.js")%>'></script> 

[. Обратите внимание на одинарные кавычки]

+0

Thats exectly то, что мне нужно! здорово! Спасибо! – Markus

+0

Я знаю, что это незначащий комментарий, как узнает любой разработчик, и Маркус понял сам. Еще хочу сказать, что вы не закрыли круглую скобку и блок рендеринга. – IsmailS

+0

Спасибо, нужно исправить –

0

Лучшим решением является использование абсолютных URL-адресов для CSS и JavaScript. Используя добавочную глобальную переменную, вы также можете использовать ее в своей системе разработки.

1

Попробуйте

<script type="text/javascript" src="~/../Scripts/jquery-ui-1.8.custom.min.js" runat="server"></script> 

В приведенной выше разметке, я предполагаю, что ваши файлы сценариев в MainWebSite \ Scripts \

«~» приносит свой reletive ссылку из корневой директории приложения. Преимущество в том, что если вы переместите файл главной страницы с MainWebSite\App1\ на MainWebSite\App1\MasterPages\, вам не придется менять все ссылки, на которые ссылаются ссылки на главной странице.

+1

~ не работает, если вы не находитесь на сервере или используете функцию ResolveURL. А в ASP.NET вы не можете создать тег скрипта runat = "server" для JS –

+0

Спасибо @Bob за то, что дайте мне знать. :) – IsmailS

Смежные вопросы