Mvc относительный путь с использованием виртуального каталога .. помогите! - PullRequest
1 голос
/ 18 мая 2010

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

пример:

<link href="../../Content/style.css" rel="stylesheet" type="text/css" />
 <script src="../../Scripts/jquery-min.js" type="text/javascript"></script>
 <img src="../../Images/logo.jpg" />

Он работает нормально, когда я размещаю его в своем корневом каталоге, но если я использую виртуальный каталог, то только мой css-файл сможет правильно ссылаться, остальные вернут 404 ... как это будет означать http://{root}/Images/logo.jpg а не http://{root}/{virtual directory}/Images/logo.jpg

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

Ответы [ 2 ]

5 голосов
/ 18 мая 2010

что-то вроде ...

   <script type="text/javascript"  
            src="<%= Url.Content ("~/Scripts/jquery.js") %>">
   </script> 

сделает свое дело

3 голосов
/ 18 мая 2010

Кроме того, в отношении MVC Best Practices Кази Манзура , вы можете создавать методы UrlHelper для обработки всех ваших файловых путей (скриптов, таблиц стилей, изображений и т. Д.). Таким образом, если вы измените каталог, все, что вам нужно сделать, это изменить соответствующий UrlHelper:

   public static string Style(this UrlHelper url, string fileName)
   {
       return url.Content("~/content/{0}".FormatWith(fileName));
   }

   public static string Script(this UrlHelper url, string fileName)
   {
       return url.Content("~/scripts/{0}".FormatWith(fileName));
   }

Затем в вашей ViewPage или MasterPage вы можете написать следующие пути:

<link  href="<%= Url.Style("site.css")%>" rel="stylesheet" type="text/css"/>
...