Posible cambio de ruptura en MVC4 Razor que se puede arreglar con "@: @"
Recientemente actualicé mi sitio web de ASP.NET MVC3 (Razor) a MVC4 (Razor2), y al hacerlo encontré lo que parecía un cambio de última hora en el motor de visualización de Razor.
El escenario (muy simplificado) se muestra a continuación.
@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>
Esto funciona bien en MVC3 / Razor, sin embargo en MVC4 / Razor2 elstring.Format
resultados de línea en un error de:
Palabra clave "cadena" inesperada después del carácter "@". Una vez dentro del código, no es necesario prefijar construcciones como "cadena" con "@".
Si eliminas el@
, el motor de vista entonces exige que termines elstring.Format
línea con un punto y coma. Sin embargo, ReSharper luego advierte (con razón):
No se utiliza el valor de retorno del método puro.
Las dos correcciones que he encontrado para esto son para usar<text>
:
<text>@string.Format("The value {0}", x)</text>
O un enfoque más curioso utilizando@:@
:
@:@string.Format("The value {0}", x)
¿Es este un cambio conocido y documentado en el motor de visualización de Razor?