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=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
在MVC6中,这是内置的。
原始答案:
<div> @($"Hello {this.Model.SomeProperty}") </div>
这只适用于使用MVC6的C#6。 即使你用C#6编译器运行MVC5,也不行。
诀窍是,剃刀分析器还不够聪明,以识别一些语法,所以你必须把所有东西都包括在圆括号(你也必须在剃刀视图中使用空条件运算符( ?.
)时这样做)。
也就是说,Razor中的string插值在MVC6中目前有点儿错误 ,所以如果出现了一些问题,我不会感到惊讶。 不pipe他们是否会被处理是另一回事。
- 在
Package Manager Console
运行以下命令,将所需的CodeDom
提供程序添加到您的项目中。 它也可以自动修改你的web.config
文件来添加CodeDom
require设置。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
- 重新启动
Visual Studio