开发者

What's with "The following line works around an ASP.NET compiler warning" in MVC Views?

I did a quick search on SO for this and didn't come up with anything.

Doesn't

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

seem like a bit of a hack? what's the point of this, and is the MS Dev Team doing anything to work towards a resolv开发者_C百科e?


There is a writeup in the ASP.NET forums about this. Without that line, you might get compiler warnings that look something like "__o is not declared". This work around prevents those from ever appearing.

From the asp.net forums...

ASP.NET Forums

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜