У меня есть некоторый код, который в основном выглядит следующим образом:Если заявления в ASPX файлах
<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: Причина, почему им отображение/скрытие это потому, что мне нужно, чтобы включить некоторые разметку вокруг контроля, если Something == true
. Я мог бы обернуть «уникальную разметку» в if-else до и после элемента управления, но это просто кажется грязным для чего-то, что действительно должно быть таким простым, как я себе представлял выше. Сам пользовательский контроль должен быть точно таким же в обоих сценариях, извините за запутанное свойство, которое у него было.
Это только я, или это просто неинтуитивный интерфейс? И действительно ли возможно вообще не загружать/выполнять пользовательский контроль, пока он находится на странице?
Это только вы, я думаю. –
Почему бы не использовать codebehind? ваш элемент управления является серверным, поэтому при добавлении параметра ID вы можете установить свою настройку. и использовать его только один раз, как упоминал @ Кеннет в его ответе. – sasjaq
Да, это действительно неинтуитивно. Но опять же, так же как и все WebForms! – theyetiman