剃刀视图中的字符串插值?
这是否支持?剃刀视图中的字符串插值?
如果是这样,是否有一些技巧可以启用它?我假设Razor没有使用足够新的编译器......?在VS2015 IDE似乎与它的罚款,但在运行时我得到
CS1056:意外的字符 '$'
更新:
开始在Visual Studio 2015年更新1,在GUI中有一个简单的过程来为您执行以下步骤。只需右键单击您的Web项目并选择“启用C#6/VB 14”。有关更多信息,请参阅MSDN博客文章“New feature to enable C# 6/VB 14”。
由于这个答案是这样写的,所以这个功能是在NuGet包的帮助下添加的。
如果您使用的是MVC5,请将此Nuget包添加到您的解决方案中。
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
的NuGet包应该修改你的web.config,但检查下列配置是在你的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>
在C#6这只对MVC6。即使您正在使用C#6编译器运行MVC5,它也不起作用。
诀窍是,剃刀分析器还不够聪明,以至于无法识别某些语法,因此您必须将所有内容包含在圆括号中(您必须在剃刀视图中使用空条件运算符(?.
)好)。
也就是说,Razor中的字符串插值是a bit buggy此刻在MVC6中,所以如果它存在一些问题,我不会感到惊讶。不管他们是否会被处理是另一回事。
-
运行在以下命令你
Package Manager Console
到所需CodeDom
提供程序添加到您的项目。它也会自动修改您的web.config
文件,以便为其添加CodeDom
需要的设置。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
-
重启的
Visual Studio
今天是正确的解决方案。来自微软的描述: '使用新的.NET编译器平台(“Roslyn”)编译器作为服务API的替代CodeDOM提供者。这为使用CodeDOM的系统中的新语言功能提供了支持(例如ASP.NET运行时编译),并提高了这些系统的编译性能。 –
对于我的场景,我已经有了这个包,但它是1.0.5版。更新到1.0.8解决了这个问题。 – Jake
你能告诉你在谈论的代码? –
您正在使用哪个ASP.NET(ASP.NET 5:构建于.NET Core上的新建;还是ASP.NET 4的更新)? – Richard
这是关闭的主题?!?!?!荒谬。 –