2013-04-18 3 views
1

мне нужно, чтобы получить базовый путь, потому что в настоящее время мое приложение размещается как суб-сайт, как:Javascript и CSS файлы не работают при использовании подкаталог

www.example.com/site1/site2/ 

Где мое приложение IIS настроен в site2, но мои бритвенные страницы и главной страницы ссылается такие вещи, как:

<link href="/Assets/css/styles.css" rel="stylesheet"> 

Когда в этом случае она должна быть:

<link href="/site1/site2/Assets/css/styles.css" rel="stylesheet"> 

У меня также есть образы, как:

<img src="/Assets/images/logo.jpg" /> 

Как я могу получить эту работу в динамично, так что я не должен жестко закодировать подкаталог где-нибудь?

+2

'@ Url.Content ("~/путь/к/file.js")'? –

+0

Обратите внимание на тильду ~ в начале пути. Это важно. См. Http://stackoverflow.com/questions/4563235/where-does-asp-net-virtual-path-to-resolving-the-tilde –

ответ

5

Вы должны использовать встроенные помощники, чтобы получить относительный путь к вашему контенту.

<link href="@Url.Content("~/Assets/css/styles.css")" rel="stylesheet"> 

Для сайта, размещенного на www.domain.com/site/subdirectory, выше будет вынести на

<link href="/site/subdirectory/Assets/css/styles.css" rel="stylesheet"> 

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

Другие примеры:

Изображения

<img src="@Url.Content("~/Assets/images/logo.jpg")" /> 

Javascript

<script type="text/javascript" src="@Url.Content("~/Assets/Scripts/jsfile.js")"></script> 
+0

Как насчет ссылок? – loyalflow

+0

Я не знаю, что вы подразумеваете под ссылками? – Tommy

+0

Этот метод предназначен для предоставления правильного пути к любому статическому контенту на вашем веб-сервере. Если вы спрашиваете, как сделать ссылки на контроллер/действия -> это другая проблема. Но мы можем вам помочь. – Tommy

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