我最近将我的网站从ASP.NET MVC3(Razor)升级到MVC4(Razor2),并且在这样做时,发现在剃刀视图引擎中看起来像是一个突破性的变化.
场景(大大简化)如下所示.
@model IEnumerable<string> @{ Layout = null; } <!DOCTYPE html> <html> <body> <div> @foreach (var x in Model) { @string.Format("Foo bar: {0}",x) // Errors in MVC4/Razor2 } </div> </body> </html>
这在MVC3 / Razor中工作正常,但是在MVC4 / Razor2的string.Format行中导致错误:
Unexpected “string” keyword after “@” character. Once inside code,you do not need to prefix constructs like “string” with “@”.
如果您删除@,视图引擎然后要求您终止字符串.格式线与分号.然而,ReSharper然后警告(正确地):
Return value of pure method is not used.
我发现这两个修补程序要么使用< text> ;::
<text>@string.Format("The value {0}",x)</text>
或者更好奇的方法是使用@:@:
@:@string.Format("The value {0}",x)
这是Razor视图引擎中的已知和记录的变化吗?
解决方法
似乎像一个bug.它适用于String:
@foreach (var x in Model) { @String.Format("Foo bar: {0}",x) }