Ich habe vor kurzem meine Website von ASP.NET MVC3 (Razor) auf MVC4 (Razor2) aktualisiert, und dabei gefunden, was wie eine brechende Änderung schien die Razor View Engine.Mögliche Bruchänderung in MVC4 Razor, die mit "@: @" behoben werden kann
Das Szenario (stark vereinfacht) ist unten dargestellt.
@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>
Dies funktioniert gut in MVC3/Razor jedoch in MVC4/Razor2 die string.Format
Linie führt zu einem Fehler von:
Unexpected "string" Stichwort nach Zeichen "@". Sobald Sie in Code sind, müssen Sie Konstrukte wie "string" nicht mit "@" voranstellen.
Wenn Sie die @
, der Motor verlangt Ansicht entfernen Sie dann, dass Sie die string.Format
Zeile mit einem Semikolon enden. ReSharper warnt jedoch (zu Recht):
Rückgabewert der reinen Methode wird nicht verwendet.
Die beiden Korrekturen ich dafür gefunden habe, sind entweder <text>
zu verwenden:
<text>@string.Format("The value {0}", x)</text>
Oder ein neugieriger Ansatz @:@
:
@:@string.Format("The value {0}", x)
Ist das eine bekannte und dokumentierte Änderung in der Razor View Engine?
Die Warnung von ReSharper in diesem Fall ist falsch und sollte ihnen oder unterdrückt gemeldet werden. Es gibt einen Unterschied zwischen dem C# -Code, der zur Entwurfszeit generiert wird, und der Laufzeit, C# wird das string.format mit einem anderen Methodenaufruf umbrechen, und daher ist es absolut gültig. Resharper sollte diese Klasse von Fehlern ignorieren (und Sie auch) –