Razor 语法错误“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”

本文关键字:对象 表达式 语句 新对象 等待 错误 语法 赋值 只有赋值 Razor 递减 | 更新日期: 2024-10-26 02:39:22

我在MVC Razor视图中声明以下语法:

 @{
    foreach (var speaker in Model)
    {
       speaker.Name;               
    }           
 }

并收到错误

只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句

我能够通过添加带有speaker.Name;@来更正

但为什么会这样呢?对不起,我是 Razor 的新手,但是当我在代码块中时@ {}为什么我需要再次使用 @。即使我没有将其与HTML混合?

请帮忙。

Razor 语法错误“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”

如果没有@,则 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;

也会"纠正"它,通过打印出来,字面意思是"扬声器。名称;"而不是其值

相关文章: