#asp.net #vb.net #razor #relative-path
#asp.net #vb.net #razor #относительный путь
Вопрос:
Я использую Visual Studio 2013. Я создал веб-сайт (ASP.NET Web Site Razor v3), который отлично работает в браузере в режиме отладки (с Chrome). Однако — когда я развертываю веб-сайт (простая копия в IIS local), пути для таблиц стилей не работают, даже если они кажутся точными в источнике представления.
Я просмотрел несколько потоков и увидел, что один из них говорит о перезаписи url. Но я не вижу, чтобы какая-либо перезапись продолжалась. Возможно, я это упускаю.
В любом случае … стили:
<link rel="stylesheet" href="~/css/bootstrap.min.css" />
<link rel="stylesheet" href="../css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="../css/fullcalendar.css" />
Вы можете видеть, что я попробовал там несколько вариантов. Когда я смотрю на исходный код, я вижу следующее:
<link rel="stylesheet" href="/MyMeds/css/bootstrap.min.css" />
<link rel="stylesheet" href="../css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="../css/fullcalendar.css" />
Мой веб-сайт IIS находится в папке /MyMeds/ . Так что это будет выглядеть правильно. Это почти похоже на то, что он переписывает его. Но я не вижу никаких правил перезаписи в файле web.config.
Спасибо.
Ответ №1:
Вам нужно использовать @Url.Content()
. Вот так:
<link href="@Url.Content("~/css/bootstrap.min.css")" rel="stylesheet" />
Комментарии:
1. Я пробовал это, но ему это не нравится. Не распознает @Url. Должен ли я импортировать класс или пространство имен?
2. @Andrew Это большая проблема. Вероятно, в вашем web.config нет всех необходимых директив. Есть ли у вас
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
в вашем web.config?3. Нет — у меня есть только зависимые сборки, которые VS2013 вставил в проект при создании (т.Е. System.Web.Helpers, System.Web.WebPages). Я добавлю это сейчас и посмотрю, что произойдет
4. Я использовал Nuget для обновления. Он создал сборку. По-прежнему не распознает @Url {не объявлен… Он может быть недоступен из-за его уровня защиты}.