2010-06-25 37 views
1

我为此做了一个快速搜索,并没有提出任何问题。在MVC Views中,“以下行可以解决ASP.NET编译器警告”问题?

<%-- The following line works around an ASP.NET compiler warning --%> 
<%: ""%> 

看起来像一个黑客攻击的一位? 这是什么意思,MS Dev Team是否正在努力寻求解决方案?

+0

我不知道答案,但该行只出现在基于VB.NET的项目中...... – 2010-06-25 01:37:03

回答

1

在ASP.NET论坛中有关于此的文章。没有这一行,你可能会得到类似“__o未声明”的编译器警告。这项工作可以防止这些人出现。

从asp.net论坛...

ASP.NET Forums

我们终于获得可靠 摄制,并确定了基本 问题。甲琐碎REPRO看起来像 这样:

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

为了在<%在 设计时提供智能感知=%>块,ASP.NET生成到一个临时__o可变 和语言 分配(VB或C# )然后为变量提供智能感知 。 这是在页面编译器看到 第一个<%= ...%>块时完成的。但在这里, 块在if里面,所以在 if关闭后,变量出 的范围。我们最终产生 是这样的:

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

的解决方法是在页面添加早期的虚拟 表达。例如。 <%=“”%>。这将不会渲染 任何东西,并且它将确保 __o在任何潜在的 'if'(或其他范围)声明之前被声明为Render方法中的顶层。

+0

谢谢,这就回答了第一个问题。有关他们是否会真正解决它的问题吗? – 2010-06-25 02:20:31

+0

不知道,我甚至不知道Visual Studio引擎甚至提出了解决范围问题的建议:/ – Tommy 2010-06-25 02:24:03

+0

当然,这个错误至少从VS 2005开始就是已知的,所以它看起来并不像快速解决VS方面的问题。 – Tommy 2010-06-25 02:33:37