Möglicher Breaking Change in MVC4 Razor, der mit "@: @" behoben werden kann

Ich habe kürzlich meine Website von ASP.NET MVC3 (Razor) auf MVC4 (Razor2) aktualisiert und dabei eine Veränderung in der Razor-Ansichts-Engine festgestellt.

Das (stark vereinfachte) Szenario 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 / Razor2string.Format Zeile führt zu einem Fehler von:

Unerwartetes Schlüsselwort "string" nach dem Zeichen "@". Sobald Sie sich im Code befinden, müssen Sie Konstrukten wie "string" kein "@" voranstellen.

Wenn Sie das entfernen@fordert die View Engine dann auf, das zu beendenstring.Format Linie mit einem Semikolon. ReSharper warnt dann jedoch (zu Recht):

Rückgabewert der reinen Methode wird nicht verwendet.

Die beiden Fixes, die ich dafür gefunden habe, sind entweder zu verwenden<text>:

<text>@string.Format("The value {0}", x)</text>

Oder ein neugierigerer Ansatz mit@:@:

@:@string.Format("The value {0}", x)

Ist dies eine bekannte und dokumentierte Änderung in der Razor-Ansichts-Engine?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage