26

我在局部视图中有以下代码:

@if (Request.IsAuthenticated)
{
    Hello, @Html.ActionLink(User.Identity.Name, "ChangePassword", "Account") | Html.ActionLink("Log off", "LogOff", "Account")
}
else
{
    @Html.ActionLink("Log in", "Login", "Account")
}

预期输出(带有适当的操作链接):

  • 如果登录:你好吉姆 | 注销
  • 如果未登录:登录

但是,这会导致错误:

  • 在 VS 中,单词“Hello”上有一个错误:“Cannot resolve symbol 'Hello'” and “&#” has “Expression expected”
  • 在浏览器中,我得到“CS1040:预处理器指令必须作为行上的第一个非空白字符出现”

如果我<p>...</p>在以“Hello”开头的行周围加上一个,错误就会消失。

@Html我在同一行中混合调用和文本显然存在一些语法错误。这样做的正确方法是什么?

4

1 回答 1

70

代码块 ( { ... }) 的内容应该是代码,而不是标记。

如果您想将文本直接放入代码块中,您有以下三种选择:

  • 将其包装在任何 HTML 标记中
  • 将其包裹在特殊的 Razor<text>标记中,该标记只会呈现没有标记的文本
  • 在行前加上@:,这是等效的

请参阅SottGu 的博客文章

于 2012-04-18T13:06:18.450 回答