У меня есть код, который выглядит примерно так:
<div>
<% if(Something) { %>
<div id="someUniqueMarkup">
This markup should not be output if Something==true.
<units:MyUserControl runat="server"/>
</div>
<% }
else { %>
<units:MyUserControl runat="server" />
<% } %>
</div>
В зависимости от Something
один из них скрыт, и это нормально. Но если я установил точки останова в пользовательском элементе управления, я заметил, что он загружается дважды (один раз для каждого из вышеперечисленных элементов управления), и все его логика запускается дважды. Я мог бы, конечно, контролировать это с помощью заполнителей или мультивизий, но то же самое, похоже, применяется - OnLoad
/Page_Load
и т.д. Запускается один раз для каждого элемента управления, который фактически находится на странице.
EDIT:
Причина, по которой im показывать/скрывать это, заключается в том, что мне нужно включить некоторую разметку вокруг элемента управления, если Something == true
. Я мог бы обернуть "уникальную разметку" в if-else до и после элемента управления, но это просто кажется грязным для чего-то, что действительно должно быть таким простым, как я себе представлял выше. Сам пользовательский контроль должен быть точно таким же в обоих сценариях, извините за запутанное свойство, которое у него было.
Это только я, или это просто неинтуитивный интерфейс? И действительно ли возможно вообще не загружать/выполнять пользовательский элемент, пока он находится на странице?