繁体   English   中英

在ASP.NET MVC3中混合Javascript和Razor时,变量范围引起混淆

[英]Confused by variable scope when mixing Javascript and Razor in ASP.NET 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>";

Razor语法应调用for循环,并且就JavaScript而言,变量foo仍在范围内,因为当浏览器解释代码时,该razor语法实际上是不可见的。

但是,我收到的错误消息来自编译器,因此C#试图以某种方式引用foo 我缺少什么?如何修改代码,以便输出正确的javascript代码,以便像我尝试的那样将<li>bar</li>起来?

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

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

@{
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM