Si les déclarations de fichiers aspx
J'ai un code qui, pour l'essentiel ressemble à ceci:
<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>
Selon Something
, l'un d'eux est caché, et c'est très bien. Mais si j'ai mis des points de rupture dans le contrôle de l'utilisateur, je remarque qu'il est chargé à deux reprises (une fois pour chacun des contrôles ci-dessus) et tout c'est la logique est en train d'être exécuté deux fois. Je pourrais bien sûr de le contrôler avec des espaces réservés ou multivues, mais la même chose semble s'appliquent - OnLoad
/Page_Load
etc est exécuté une fois pour chaque contrôle qui est en fait sur la page.
EDIT:
La raison pour laquelle im montrer/cacher c'est parce que j'ai besoin d'inclure certains balisage autour de la contrôler si Something == true
. J'ai pu envelopper "uniques balisage" lui-même en si-sinon avant et après le contrôle, mais qui semble juste sale pour quelque chose qui devrait vraiment être aussi simple que je l'ai imaginé ci-dessus. Le contrôle de l'utilisateur lui-même doit être exactement le même dans les deux scénarios, désolé pour la confusion de la propriété qu'il a eu.
Est-ce juste moi, ou est-ce vraiment une interface peu intuitive? Et est-il réellement possible de ne pas charger/exécuter un contrôle de l'utilisateur à tout, tant que c'est sur la page?
- C'est juste vous, je pense.
- pourquoi ne pas utiliser le code-behind? votre contrôle est côté serveur, donc quand les ajoutant l'ID de paramètre, vous pouvez définir vos paramètres. et de l'utiliser qu'une seule fois, comme mentionné @Kenneth dans sa réponse.
- Oui, c'est vraiment pas intuitif. Mais là encore, donc, est l'ensemble des Formulaires web!
- Eh bien, c'est un gros mensonge.
- dans·tu·i·tive /inˈt(y)ooitiv/ Adjectif fondées sur ce que l'on ressent à être vrai, même sans raisonnement conscient; instinctive. (principalement des logiciels informatiques) Facile à utiliser et à comprendre. Je ne suis pas un "menteur" - ce n'est pas intuitive. Qui langage de programmation exécute quelque chose dans un if, même si la condition est fausse? Réponse: à peu près aucun, en dehors de WebForms, dans cet exemple.
- Ce code à l'intérieur d'un bloc est exécuté, même lorsque le bloc "n'est pas exécutée" est loin d'être intuitif qu'il arrive, si vous me demandez.
- C'est une vague de généralisation pour l'ensemble de Formulaires web.
- Je l'avais fait en désaccord. Ou, c'est un balayage de la généralisation. Mais c'est vrai. Comment intuitif est l'ensemble du cycle de vie de page? Ajouter dans la liaison de données et la liaison de données des événements. Et ceux sale, généré designer.cs-fichiers. Quel est intuitive? Personne ne peut comprendre ces choses sans connaissances spécifiques de la façon dont les Webforms de travail, alors que la plupart des autres cadres peuvent généralement être compris par la connaissance de la langue et les principaux modèles utilisés.
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez deux contrôles sur la page, il va les rendre à la fois. Le si-vérifiez que vous créez, détermine uniquement si elle est incluse dans la sortie. La meilleure façon d'éviter cela est de changer votre code comme ceci:
MODIFIER: Réponse à modifier dans le post original:
De cette façon, vous aurez seulement à l'utilisateur de contrôler émise (et chargé) si
Something
est vraiSomeSetting
attribut n'était pas vraiment mon point du tout, c'était juste ajouté plus de différence entre eux. :-\LoadControl
de votre usercontrol, définissez les propriétés, puis l'ajouter à l'espace réservéLoadControl
semble effectivement que la solution je veux en fait ici, à part que c'est vraiment sale (chaîne de référence à un contrôle utilisateur).De la meilleure façon, à mon avis, est de déclarer votre de contrôle de l'utilisateur une fois dans le ASPX.
Dans le code derrière, sur PageLoad, appliquer la logique que vous voyez l'ajustement:
Si il y a un problème dans la chronologie, ne la logique ci-dessus en Précharge, puisqu'il sera le feu avant que la Page de Chargement de la page et toutes ses commandes de l'utilisateur.
EDIT:
Vous pouvez mettre deux Identifiants différents sur les contrôles de l'utilisateur ayant Activé = false.
Dans Page_load, définir Permis à l'un d'entre eux basée sur la logique que vous désirez.
SomeSetting
bien depuis qu'il n'était pas vraiment partie de le point que j'essayais de faire.