Razor 语法错误“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”
本文关键字:对象 表达式 语句 新对象 等待 错误 语法 赋值 只有赋值 Razor 递减 | 更新日期: 2024-10-26 02:39:22
我在MVC Razor视图中声明以下语法:
@{
foreach (var speaker in Model)
{
speaker.Name;
}
}
并收到错误
只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句
我能够通过添加带有speaker.Name;
的@
来更正
但为什么会这样呢?对不起,我是 Razor 的新手,但是当我在代码块中时@ {}
为什么我需要再次使用 @。即使我没有将其与HTML混合?
请帮忙。
如果没有@
,则 razor 引擎speaker.Name;
解释为纯 C#——也就是说,只是引用一个属性,但不对它做任何事情——但这不会编译。仅单独引用属性而不获取或设置其值的语句在 C# 中无效。
考虑一下这把剃须刀
@foreach (var speaker in Model)
{
var name = speaker.Name;
@name
}
第一行是纯 C#。它声明一个变量,name
并用 speaker.Name
的值初始化它。
第二行被解释为 razor print 指令,该指令在输出中打印 name
的值。
在 Razor 代码块中,@
表示将此值打印出来。在这种特殊情况下,如果没有@
,您不会告诉 Razor 执行任何操作,您只需插入一个属性名称来代替语句。
这就是为什么@
在这种情况下会纠正的原因。它与"标记代码块"的含义不同。
作为旁注,您还可以使用 @
来标记文字块:
@:speaker.Name;
也会"纠正"它,通过打印出来,字面意思是"扬声器。名称;"而不是其值