這是否支持?剃刀視圖中的字符串插值?
如果是這樣,是否有一些技巧可以啓用它?我假設Razor沒有使用足夠新的編譯器......?在VS2015 IDE似乎與它的罰款,但在運行時我得到
CS1056:意外的字符 '$'
這是否支持?剃刀視圖中的字符串插值?
如果是這樣,是否有一些技巧可以啓用它?我假設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
這是關閉的主題?!?!?!荒謬。 –