ich einen Code haben, der im Wesentlichen wie folgt aussieht:Wenn Aussagen in aspx-Dateien
<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>
Je nach Something
, einer von ihnen verborgen ist, und das ist in Ordnung. Aber wenn ich Breakpoints im Benutzersteuerelement setze, merke ich, dass es zweimal geladen wird (einmal für jede der oben genannten Steuerelemente) und seine Logik wird zweimal ausgeführt. Ich könnte natürlich dies mit Platzhaltern oder Multiviews steuern, aber das gleiche scheint zu gelten - OnLoad
/Page_Load
usw. wird einmal für jedes Steuerelement ausgeführt, das sich tatsächlich auf der Seite befindet.
EDIT: Der Grund, warum im Aus-/diese versteckt, weil ich einige Markup enthalten muß um die Kontrolle, wenn Something == true
. Ich könnte das "einzigartige Markup" selbst in if-else vor und nach dem Steuerelement einpacken, aber das scheint nur schmutzig zu sein für etwas, das wirklich so einfach sein sollte, wie ich es mir oben vorgestellt habe. Das Benutzersteuerelement selbst sollte in beiden Szenarien identisch sein. Entschuldigung für die verwirrende Eigenschaft, die es hatte.
Ist es nur ich oder ist das nur eine wirklich unintuitive Schnittstelle? Und ist es tatsächlich möglich, ein Benutzersteuerelement überhaupt nicht zu laden/auszuführen, solange es sich auf der Seite befindet?
Es sind nur Sie, denke ich. –
Warum nicht Codebehind verwenden? Ihre Steuerung ist serverseitig. Wenn Sie also den ID-Parameter hinzufügen, können Sie Ihre Einstellung festlegen. und benutze es nur einmal, wie @Kenneth in seiner Antwort erwähnt. – sasjaq
Ja, es ist wirklich nicht intuitiv. Aber das gilt auch für WebForms! – theyetiman