有个空间

有个标题

vb asp.net error <__o is not declared>

FWD: http://stackoverflow.com/questions/750902/how-do-i-get-rid-of-o-is-not-declared

I've found the answer on the .net forums. It contains a good explanation of why ASP.Net is acting the way it is:

[quote]

We have finally obtained reliable repro and identified the underlying issue. A trivial repro looks like this:

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

In order to provide intellisense in <%= %> blocks at design time, ASP.NET generates assignment to a temporary __o variable and language (VB or C#) then provide the intellisense for the variable. That is done when page compiler sees the first <%= ... %> block. But here, the block is inside the if, so after the if closes, the variable goes out of scope. We end up generating something like this:

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

The workaround is to add a dummy expression early in the page. E.g. <%="" %>. This will not render anything, and it will make sure that __o is declared top level in the Render method, before any potential ‘if’ (or other scoping) statement.

[/quote]

An alternative solution is to simply use

<% response.write(var) %>

instead of

<%= var %>
link|edit|

posted on 2011-03-16 16:16 游雯 阅读(127) 评论(0)  编辑  收藏 所属分类: .net编程技巧


只有注册用户登录后才能发表评论。


网站导航: