我最近将我的网站从 ASP.NET MVC3 (Razor) 升级到 MVC4 (Razor2),这样做时发现 Razor View 引擎似乎发生了重大变化。
场景(大大简化)如下所示。
@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 "@".
如果删除 @
,然后 View 引擎要求您终止 string.Format
带分号的行。然而,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 View 引擎中已知且有记录的更改吗?
最佳答案
看起来像是一个错误。它适用于String
:
@foreach (var x in Model)
{
@String.Format("Foo bar: {0}", x)
}
关于asp.net-mvc-3 - MVC4 Razor 中可能存在重大变化,可通过 "@:@"修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543841/