2011-11-06 62 views
2

我有一些代码,失败是由于错误的变量范围困惑:在ASP.NET混合时的Javascript和剃刀MVC3

The name 'foo' does not exist in the current context 

这是因为我感到困惑的一个变量的作用域问题。我认为这应该工作:

var foo = "<ul>"; 

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

剃刀语法应,因为在浏览器解释代码的时间调用for循环和可变foo仍然在范围在JavaScript方面,剃刀语法基本上不可见。

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

回答

5

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

您需要明确告诉剃刀它是标记using the <text> special tag

+0

谢谢!正是我在寻找''和'@:'前缀的工作。 – TMC

0
@{ 
var foo = "<ul>"; 

for (int i = 0; i < 10; i++) 
{ 
    foo += "<li>bar</li>"; 
} 
foo += "</ul>"; 

} 

或本

@var foo = "<ul>"; 

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

现在这个全方面被认为是剃刀包括var foo

+0

我认为这与OP询问的内容相反 –

+0

是的,这与我所问的是相反的。 – TMC