Возможное критическое изменение в MVC4 Razor, которое можно исправить с помощью «@: @»

Недавно я обновил свой веб-сайт с 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>

Это прекрасно работает в MVC3 / Razor, однако в MVC4 / Razor2string.Format Строка приводит к ошибке:

Неожиданное ключевое слово "string" после символа "@". Оказавшись внутри кода, вам не нужно ставить перед конструкциями, такими как «строка», символ «@».

Если вы удалите@двигатель представления затем требует, чтобы вы прекратилиstring.Format строка с точкой с запятой. Однако ReSharper тогда предупреждает (правильно):

Возвращаемое значение чистого метода не используется.

Два исправления, которые я нашел для этого, должны использовать<text>:

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

Или более любопытный подход с использованием@:@:

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

Является ли это известным и задокументированным изменением в движке Razor?

Ответы на вопрос(2)

Ваш ответ на вопрос