C#5中不提供“插值字符串”功能。请使用语言版本6或更高版本。

时间:2015-08-05 22:45:32

标签: c# asp.net-mvc-5 string-interpolation

当我放入Razor View时,以下行无法编译。

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

然而,在控制器中,同一条线路完全正常。

为什么我不能在剃刀视图上进行用户字符串插值?或者我可能需要配置一些东西?

3 个答案:

答案 0 :(得分:3)

如果您在.NET Framework 4.5.1项目中遇到此错误,升级到4.5.2可以解决问题。

答案 1 :(得分:2)

你必须用这样的大括号封装它:

编辑:我更新了,因为卷曲了。

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

我成功尝试了以下内容:

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

答案 2 :(得分:-1)

关键是要在web.config中看到下面的compilerOptions =“/ langversion:6部分。如果没有它,我会在.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>