Синтаксическая ошибка Razor " в качестве оператора можно использовать только выражения assignment, call, increment, decrement, await и new object"
Я объявляю следующий синтаксис в представлении MVC Razor:
@{
foreach (var speaker in Model)
{
speaker.Name;
}
}
и получаю ошибку
в качестве оператора можно использовать только выражения присваивания, вызова, приращения, декремента, ожидания и новых объектов--5-->
Я могу исправить, добавив @
С speaker.Name;
но почему ? Извините, я новичок в Razor, но пока я в блоке кода @ {}
почему я должен использовать @ снова. Даже я не смешиваю. с HTML ?
помогите пожалуйста.
2 ответов
без @
, двигатель бритвы интерпретирует speaker.Name;
как чистый C#-то есть, просто ссылаясь на свойство, но ничего не делая с ним-но это не будет компилироваться. оператор, который просто ссылается на свойство сам по себе, без получения или установки его значения, недопустим в C#.
рассмотрим эту бритву
@foreach (var speaker in Model)
{
var name = speaker.Name;
@name
}
первая строка-чистый C#. Он объявляет переменную name
и инициализирует его значением speaker.Name
.
в вторая строка интерпретируется как директива печати бритвы, которая печатает значение name
на выходе.
в блоке кода бритвы,@
означает распечатать это значение. В этом конкретном случае, без @
вы ничего не говорите Razor, вы просто вставляете имя свойства вместо оператора.
вот почему @
исправит в этом случае. Он имеет другое значение, чем "пометить кодовый блок".
в качестве примечания вы также можете использовать @
чтобы отметить буквальный блок:
@:speaker.Name;
также "исправит" его, распечатав, буквально "динамик".Имя; " вместо его значения