Функция "интерполированные строки" недоступна на С# 5. Используйте язык версии 6 или выше.

Следующая строка не компилируется, когда я помещаю в Razor View.

var extPropLookupNameCompania = $"extension_{SettingsHelper.ClientId.Replace("-", "")}_{"Compania"}";

Однако в контроллере одна и та же линия работает отлично.

Почему я не могу использовать интерполяцию пользовательских строк в представлениях бритвы? или Может мне нужно что-то настроить?

Ответ 1

Если вы столкнулись с этой ошибкой в ​​.NET Framework 4.5.1, обновление до версии 4.5.2 решает проблему.

Ответ 2

Вам нужно заключить его в фигурные скобки следующим образом:

EDIT: я обновился, потому что не было кудрявого.

var extPropLookupNameCompania = $("{extension_{SettingsHelper.ClientId.Replace("-", "")}_{"Compania"}");

Я успешно выполнил следующее:

 @($"It is {DateTime.Now}")

Ответ 3

Ключ состоит в том, чтобы увидеть compilerOptions = "/langversion: 6 часть из следующего в вашем web.config. Без этого я получил ошибки, пытаясь использовать интерполяцию строк внутри файла .cshtml.

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