C# Razor:名称在当前上下文中不存在

8

我知道我可能很蠢,但我想不出为什么这段代码不起作用。我对Razor非常陌生,请多多包涵。

以下是我的标记中的代码:(我已将其简化,以便在重现问题时尽可能简单)

string testVar = "test";
@testVar

它返回以下内容:
error CS0103: The name 'testVar' does not exist in the current context

我已经尝试使用不同的变量名称,尝试使用 "var" 替代 "string" 进行声明,尝试分配各种不同的值给它,尝试在变量周围加上括号,例如 @(testVar) ,但问题仍然存在。这非常令人沮丧,因为在我的代码另一部分中我有

string prop = @p.Name + " (" + @p.PropertyType + ") - " + @p.GetValue(@page, null).ToString() + "\r\n";
@prop

这个功能很正常。

我想不出什么原因会导致问题,这让我开始感到沮丧。

谢谢,

YM

1个回答

10

在 Razor 中,当我们想要编写 C# 语句时,我们必须告诉它从这里开始是 C# 代码:

@{   // from here c# block starts
string testVar = "test";

}  // here ends

如果您想在HTML中访问此变量,可以这样做:

<span>@testVar</span>

当你正在写作:

string prop = @p.Name + " (" + @p.PropertyType + ") - " + @p.GetValue(@page, null).ToString() + "\r\n";

它被视为纯文本,并将在浏览器中呈现,例如 "string prop = ..."。您可以通过以下方式表明它是C#代码:

@{
string prop = @p.Name + " (" + @p.PropertyType + ") - " + @p.GetValue(@page, null).ToString() + "\r\n";
}

当我提出这个问题时,我知道自己在做一些愚蠢的事情,但我必须问才能找到答案。非常感谢,这正是我没有做的。 - Joshua Walsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接