在ASP.NET MVC3中混合使用Javascript和Razor时,混淆了变量范围

TMC*_*TMC 2 c# asp.net-mvc razor asp.net-mvc-3

我有一些代码由于错误而失败:

The name 'foo' does not exist in the current context 
Run Code Online (Sandbox Code Playgroud)

这是由于我感到困惑的可变范围问题.我认为这应该有效:

var foo = "<ul>";

@for (int i = 0; i < 10; i++)
{
    foo += "<li>bar</li>";
}
foo += "</ul>";
Run Code Online (Sandbox Code Playgroud)

Razor语法应该调用for循环,并且变量foo在javascript方面仍然在范围内,因为在浏览器解释代码时,razor语法基本上是不可见的.

但是,我得到的错误消息来自编译器,所以C#试图引用foo.我错过了什么,我如何修改代码,以便我得到正确的javascript代码输出,所以它连接<li>bar</li>像我试图做的那样?

SLa*_*aks 5

代码块的内容(例如for循环)被假定为服务器端代码.

您需要使用<text>特殊标记明确告诉Razor它是标记.