ASP.NET MVC Ошибка: «Имя __o» не объявлено ». - PullRequest
8 голосов
/ 13 марта 2009

У меня есть целая куча этих ошибок в моем файле View aspx.

Но, он строит и работает просто отлично.

Кто они? Как мне от них избавиться?

1 Ответ

8 голосов
/ 13 марта 2009

Михаил Архипов опубликовал объяснение и обходной путь на форумах ASP.NET :

Мы наконец-то получили надежные репро и определили основной вопрос. Тривиальное воспроизведение выглядит как это:

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

Чтобы обеспечить intellisense в блоках <% =%> в время разработки, ASP.NET генерирует присваивание временной переменной __o и язык (VB или C #) затем предоставить intellisense для переменной. Это делается, когда компилятор страницы видит первый <% = ...%> блок. Но здесь, блок находится внутри if, поэтому после если закрывается, переменная выходит области видимости Мы в конечном итоге генерации как то так:

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

Обходной путь - добавить пустышку Выражение в начале страницы. Например. <% = ""%>. Это не будет оказывать что-нибудь, и это сделает __o объявлен верхним уровнем в методе Render, прежде чем любой потенциальный ‘If’ (или другой обзор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...