Вопрос по asp.net-mvc-4 – Тропы косой черты не работают в MVC 4

9

КакЯ понимаю, этопростая равнина & Quot; ~ / Foo & Quot; путь должен работать как @ Url.Content (& quot; ~ / & quot;) в MVC 4. Однако я пытаюсь это сделать и получаю много неработающих путей - тильда все еще там, когда выводится HTML.

Так, например, у меня есть этот путь в /Views/Shared/_Layout.cshtml:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

И доставленный HTML выглядит так:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

Я уверен, что у меня это тоже работает как проект MVC 4. Следующие элементы в файле web.config:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

... и на данный момент я не уверен, что искать дальше. Какие-либо предложения?

Я попытался создать новое приложение MVC 4, но эта функция все еще не работает. Собираюсь попробовать переустановить MVC 4. Josh Schultz
Можете ли вы попробовать создать интернет-приложение MVC 4 и попробовать эту функцию? Возможно, вы не используете Razor 2, поскольку @SilverNinja также упоминал, если вы просто изменили ссылку на MVC 4. Mert Akcakaya
Похоже, вы все еще используете Razor 1,not Razor 2 SliverNinja - MSFT

Ваш Ответ

7   ответов
5

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

@{
Layout = "∼/Views/_BasicLayout.cshtml";
}

против

@{
Layout = "~/Views/_BasicLayout.cshtml";
}

Сильно отличается - дерзко найти

0

7

MvcWebRazorHostFactory является & lt; 4,0).

Проверьте web.config в вашемViews папка выглядит так ...

 <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
Если вы используете MVC 4, вы сможете получитьresource bundling working, Можете ли вы попробовать связать свой CSS?
Это выглядит так. Josh Schultz
1

это, добавив следующее в файл проекта web.config (not web.config, используемый представлениями, MVC4).

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>
4

Вот решил эту проблему для меня. Я до сих пор не понимаю, что вызвало проблему, но я могу с этим смириться.

16

ошибка в Razor V2где апостроф / одинарная кавычка в комментарии HTML нарушает разрешение~ пути.

Обходной путь должен использовать комментарии Razor вместо комментариев HTML. Т.е. заменить<!-- Here's your comment--> с@* Here's your comment *@.

Извините, это длинный путь, так как я не знаю, есть ли у вас комментарии HTML, не говоря уже о комментариях, содержащих одинарные кавычки.

Это работает. Интересно, почему это не решено в MVC5 сейчас?
Это исправило мою проблему, спасибо!
Я тоже зациклился на этом тоже. Страница, над которой я работал, содержала html-комментарий с одним & quot; в этом. Удаление & quot; или добавление второго & quot; к комментарию исправляет проблему.
Это было моей причиной: --- & gt; Дополнительная черта при закрытии комментария вверху страницы.
Большое спасибо, это сработало для меня ... Ура ... :)
0

href= а не какой< tag >
Примеры:

< img src="@Url.Content("Images/someImage.jpg")"/>
< a href="@Url.Content("Home/About")" >click here< /a>

Это нормально, чтобы гнездиться@ внутри другого@section {}

Почему отрицательный голос?
Скотт прав, но технически решение Питера все равно будет работать, если вы случайно выберете Razor 1. Хотя лучше просто установить Razor 2. ;)
Возможно, это было связано с тем, что этот синтаксис больше не требуется.davidhayden.me/blog/…

Похожие вопросы