Ric*_*ett 15 razor asp.net-mvc-3 asp.net-mvc-4 razor-2
我最近将我的网站从ASP.NET MVC3(Razor)升级到MVC4(Razor2),并且在这样做时发现了Razor视图引擎中的一个重大变化.
场景(大大简化)如下所示.
@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>
Run Code Online (Sandbox Code Playgroud)
这在MVC3/Razor中工作正常,但是在MVC4/Razor2中,该string.Format行会导致以下错误:
"@"字符后面的意外"字符串"关键字.进入代码后,您不需要使用"@"作为"string"之类的结构前缀.
如果删除@,则视图引擎会要求您string.Format使用分号终止该行.然而,ReSharper然后警告(正确地):
不使用纯方法的返回值.
我发现的两个修复是要么使用<text>:
<text>@string.Format("The value {0}", x)</text>
Run Code Online (Sandbox Code Playgroud)
或者使用以下更好奇的方法@:@:
@:@string.Format("The value {0}", x)
Run Code Online (Sandbox Code Playgroud)
这是Razor视图引擎中已知且有记录的变化吗?
pol*_*ios 16
好像是一个bug.它适用于String:
@foreach (var x in Model)
{
@String.Format("Foo bar: {0}", x)
}
Run Code Online (Sandbox Code Playgroud)
这确实是我们决定不修复的错误,请注意语法不正确,因为在这种情况下C#和标记之间没有转换.
我知道resharper在这里显示警告,但我相信警告是错误的.
以下是未来参考的错误 https://aspnetwebstack.codeplex.com/workitem/458
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |