Razor 2 с веб-страницами 2

Я не могу заставить механизм просмотра Razor 2 работать с моим проектом веб-страниц. Я установил Web Matrix и все такое, но очевидно, что используется движок Razor 1, потому что функция тильды (href="~/style.css") не работает.

Я пытался изменить свой файл конфигурации и ссылаться на файлы DLL Razor 2, но он все еще не работает.

Вот как выглядит мой файл конфигурации:

<?xml version="1.0"?>
<configuration>

  <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>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  <appSettings>
    <add key="webpages:Enabled" value="true"/>
  </appSettings>

  <system.web>
    <compilation debug="true"/>
  </system.web>

</configuration>

person Adrian Rosca    schedule 08.03.2013    source источник


Ответы (1)


Когда вы смотрите на System.Web.WebPages.dll в папке bin, какая там версия? (Например, у меня версия 2.0.20710.0)

Не знаю, зачем вам старая версия, если вы работаете с современной Webmatrix v2 Rel 2, но вы можете найти интересующие вас сборки здесь:

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies


обновление на основе ветки комментариев:

What Adrian Rosca eventually did to make this work in VS2012 was to reference all following assemblies and make them "Copy Local":

  • System.Web.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll.


    изменить:

    Вы можете попробовать добавить targetFramework="4.0" в запись компиляции web.config:

     <compilation debug="true" targetFramework="4.0" />
    

    Ознакомьтесь со следующим сообщением SO, чтобы узнать больше об этом и, в зависимости от того, где вы развертываете свое веб-приложение, действительно ли это важно для вас:
    Что произойдет, если я не укажу targetFramework=4.0?

    person AardVark71    schedule 09.03.2013
    comment
    В корзине находится dll версии 2.0, но я не могу заставить работать определенные функции 2.0, поэтому я думаю, что она все еще загружает 1.0. Я хочу уточнить, что я не использую MVC. Просто веб-страницы (.cshtml). Можете ли вы заставить функцию тильды работать? Например. ‹ссылка href=~/style.css rel=stylesheet type=text/css› - person Adrian Rosca; 09.03.2013
    comment
    Хорошо, только что проверил. Новое автоматическое разрешение тильды Razor 2 работает для меня как шарм. Единственными настройками, которые у меня были в моем web.config, были эти ‹compilation debug=true targetFramework=4.0 /› (обратите внимание на дополнительный targetFramework=4.0 по сравнению в ваш конфигурационный файл) - person AardVark71; 10.03.2013
    comment
    Прости. Все равно не повезло. TargetFramework=4.0 не имеет значения. Начал новый проект из шаблона пустого веб-приложения ASP.NET в Visual Studio 2012 Express. Создал index.cshtml, style.css и попытался загрузить style.css с разрешением тильды. Не работает. - person Adrian Rosca; 10.03.2013
    comment
    Не уверен сейчас... вы уверены, что у вас есть этот style.css в вашей корневой папке? Если вы посмотрите на источник своей страницы в браузере... вы все еще видите тильду в атрибуте href тегов ссылки или косую черту? - person AardVark71; 10.03.2013
    comment
    Я все еще вижу тильду в Firebug после рендеринга страницы, поэтому она явно не проанализирована. У меня есть style.css в папке css. Итак, href ~/css/style.css. - person Adrian Rosca; 10.03.2013
    comment
    Попытался создать пустой проект с помощью WebMatrix, и это сработало. Но сделать то же самое в VS 2012 Express не получится. - person Adrian Rosca; 11.03.2013
    comment
    Здорово ! Теперь мне интересно, какую dll вы видите в папке bin проектов VS 2012 Express? Если это старая версия System.Web.WebPages.dll, вы можете скопировать ее из Webmatrix, как я упоминал в ответе. - person AardVark71; 11.03.2013
    comment
    Теперь это работает! Хитрость заключалась в том, чтобы сослаться на следующие сборки и сделать их локальными: System.Web.Razor.dll, System.Web.WebPages.Deployment.dll, System.Web.WebPages.dll, System.Web.WebPages.Razor.dll. Что в значительной степени то, что вы сказали с самого начала... =) Большое спасибо за вашу помощь! - person Adrian Rosca; 12.03.2013
    comment
    Вы должны отредактировать свой ответ, так как целевая структура на самом деле не является решением здесь, а создает четыре сборки, описанные выше, Copy Local. Еще раз спасибо! - person Adrian Rosca; 12.03.2013
    comment
    Просто для справки в будущем я начал новый проект, и он работает, если я использую только эти две сборки в качестве локального копирования: System.Web.WebPages.dll и System.Web.WebPages.Razor.dll. - person Adrian Rosca; 01.01.2014