Razor视图中的string插值?

这是支持吗?

如果是这样,是否有一些技巧来启用它? 我假设剃刀没有使用足够新的编译器…? VS2015的IDE似乎没问题,但在运行时,我越来越

CS1056:意外的字符'$'

更新

从Visual Studio 2015 Update 1开始,在GUI中有一个简单的过程来为您执行以下步骤。 只需右键单击您的Web项目,然后select“启用C#6 / VB 14”。 更多信息可在MSDN博客文章“ 启用C#6 / VB 14的新function ”中find。

由于这个答案是写的,这个function已经添加了一个NuGet包的帮助。

如果您使用MVC5,请将此Nuget包添加到您的解决scheme中。

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

nuget包应该修改你的web.config,但是检查下面的configuration是否在你的web.config文件中(如果没有添加):

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

这只适用于使用MVC6的C#6。 即使你用C#6编译器运行MVC5,也不行。

诀窍是,剃刀分析器还不够聪明,以识别一些语法,所以你必须把所有东西都包括在圆括号(你也必须在剃刀视图中使用空条件运算符( ?. )时这样做)。

也就是说,Razor中的string插值在MVC6中目前有点儿错误 ,所以如果出现了一些问题,我不会感到惊讶。 不pipe他们是否会被处理是另一回事。

  1. Package Manager Console 运行以下命令,将所需的CodeDom提供程序添加到您的项目中。 它也可以自动修改你的web.config文件来添加CodeDom require设置。

 Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

  1. 重新启动 Visual Studio