Possível quebra de mudança no MVC4 Razor que pode ser corrigido com “@: @”
Recentemente, atualizei meu site da ASP.NET MVC3 (Razor) para o MVC4 (Razor2) e, ao fazê-lo, encontrei o que pareceu uma mudança no mecanismo de visualização do Razor.
O cenário (bastante simplificado) é mostrado abaixo.
@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>
Isso funciona bem no MVC3 / Razor, no entanto, no MVC4 / Razor2 ostring.Format
linha resulta em um erro de:
Palavra-chave "string" inesperada após o caractere "@". Uma vez dentro do código, você não precisa prefixar construções como "string" com "@".
Se você remover o@
, o mecanismo de visualização exige que você terminestring.Format
linha com um ponto e vírgula. No entanto, o ReSharper então avisa (com razão):
Valor de retorno do método puro não é usado.
As duas correções que encontrei para isso são ou usar<text>
:
<text>@string.Format("The value {0}", x)</text>
Ou uma abordagem mais curiosa usando@:@
:
@:@string.Format("The value {0}", x)
Esta é uma mudança conhecida e documentada no mecanismo de visualização Razor?