Недавно я обновил свой веб-сайт от 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/Razor2 строка string.Format
приводит к ошибке:
Неожиданное ключевое слово "строка" после символа "@". После внутреннего кода вам не нужно префиксные конструкции, такие как "string" с "@".
Если вы удалите @
, тогда механизм просмотра требует, чтобы вы завершали строку string.Format
точкой с запятой. Однако ReSharper затем предупреждает (правильно):
Возвращаемое значение чистого метода не используется.
Два исправления, которые я нашел для этого, - либо использовать <text>
:
<text>@string.Format("The value {0}", x)</text>
Или более любопытный подход с использованием @:@
:
@:@string.Format("The value {0}", x)
Является ли это известным и документированным изменением механизма просмотра Razor?