Интерполяция строк в представлении Razor?



это возможно?



Если да, то есть ли какой-то трюк, чтобы включить его? Я предполагаю, что Razor не использует достаточно новый компилятор...? VS2015 IDE, кажется, все в порядке с ним, но во время выполнения я получаю




CS1056: неожиданный символ '$'


728   2  

2 ответов:

обновление:

начиная с Visual Studio 2015 Update 1, есть простой процесс в графическом интерфейсе, чтобы сделать следующие шаги для вас. Просто щелкните правой кнопкой мыши ваш веб-проект и выберите "Включить C# 6 / VB 14". Дополнительная информация доступна в блоге MSDN,"новая функция для включения C# 6 / VB 14".

поскольку этот ответ был написан, эта функциональность была добавлена с помощью пакета NuGet.

добавить этот пакет Nuget к вашему решению, если вы используете MVC5.

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

пакет nuget должен изменить ваш веб.config, но убедитесь, что следующие конфигурации в web.конфигурационный файл (и если это не добавить его в):

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

В MVC6, это встроенный.


оригинальный ответ:

<div>
    @($"Hello {this.Model.SomeProperty}")
</div>

это работает только в C# 6 с MVC6. Даже если это так запуск MVC5 с компилятором C# 6, он не будет работать.

фокус в том, что парсер razor еще недостаточно умен, чтобы распознавать некоторые синтаксисы, поэтому вы должны обернуть все это в скобки (вы должны сделать это при использовании оператора null-conditional (?.) в ваших представлениях бритвы также).

что сказал, строка интерполяции в Razor является немного глючит на данный момент в MVC6, поэтому я не удивлюсь, если с ним возникнут какие-то проблемы. независимо от того, являются ли они будет решаться совсем другой вопрос.

  1. Run следующая команда в вашем Package Manager Console для добавления необходима CodeDom поставщик для вашего проекта. Это также изменить ваш web.config файл автоматически добавить CodeDom требуют настройки к нему.

    Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform


  1. перезагрузка the Visual Studio

Примечание: как @Jake упоминается в его комментарии при этом ответьте, если у вас есть DotNetCompilerPlatform пакет уже, поэтому попробуйте обновить его.

Comments

    Ничего не найдено.