ASP.NET MVC错误:“名称'__'未声明。”

时间:2009-03-13 16:16:49

标签: asp.net-mvc

我的View aspx文件中有很多这些错误。

但是,它构建并运行得很好。

他们是什么?我如何摆脱它们?

1 个答案:

答案 0 :(得分:8)

Mikhail Arkhipov发布了explanation and workaround in the ASP.NET forums

  

我们终于获得了可靠的   repro并确定了潜在的   问题。一个琐碎的复制品看起来像   这样:

<% if (true) { %>
    <%=1%>
<% } %>
<%=2%>
     

为了在&lt;%=%&gt;中提供智能感知块在   设计时,ASP.NET生成   赋值给临时__o变量   然后提供语言(VB或C#)   变量的intellisense。   这是在页面编译器看到时完成的   第一个&lt;%= ...%&gt;块。但在这里,   块在if里面,所以之后   如果关闭,变量就会消失   范围。我们最终会产生   像这样的东西:

if (true) { 
    object @__o;
    @__o = 1;
}
@__o = 2;
     

解决方法是添加一个虚拟对象   在页面的早期表达。例如。   &lt;%=“”%&gt;。这不会呈现   什么,它会确保   __o在Render方法中被声明为顶级,在任何潜在之前   'if'(或其他范围界定)声明。