2010-05-22 14 views
0

le problème que j'ai est que j'ai plusieurs pages maîtres imbriquées:pages maîtres, pages de formulaire, formulaire runat = serveur> toutes les méthodes onclick sur la page maquette?

  • niveau 1: global (en-tête, pied de page, connexion, navigation, etc ...)
  • Niveau 2: spécifique (pages de recherche, les pages de compte, etc ...)
  • niveau 3: la page elle-même

maintenant, étant donné qu'une seule forme peut ha ve runat=server, j'ai mis le formulaire à la page globale (donc je peux gérer des choses comme la connexion, les commentaires, etc ...).

maintenant avec cette solution je devrais aussi mettre les méthodes de niveau 3 (voir ci-dessus), comme la recherche aussi sur la page maître de niveau 1, mais cela conduira à une page lourde (pour le développement) avec le code de tous les endroits, même ceux qui sont utilisés sur une seule page (changer le formulaire d'email par exemple).

est-il possible de déléguer ces méthodes à partir des événements onclick (par exemple: ChangeEMail) du niveau 1 (masterpage globale) au niveau 3 (la page elle-même). Pour être encore plus clair: Je ne veux PAS avoir la méthode ChangeEMail sur le code global de la page maître, mais je voudrais le 'déplacer' d'une façon ou d'une autre vers la seule page qui l'utilisera réellement. la raison pour laquelle il doit actuellement être sur le maître global est que le maître global a form runat=server et il peut y avoir seulement un de ceux par page aspx. De cette façon, il sera plus facile (plus logique) de structurer le code.

thnx (espère je l'ai expliqué correctement)

ont cherché mais n'a pas trouvé toute information générale sur la manipulation de ce cas, usualy la réponse est la suivante: ont toutes les méthodes sur la page principale, mais je ne J'aime ça. Donc, toute façon de le déplacer vers la page spécifique serait génial. thnx

modifier également partie de la même chose ... d'autre part - comment accéder au textbox1.text par exemple sur la page de contenu de la page principale? une meilleure pratique pour cela?

Répondre

2

Si vous placez le bouton Rechercher et la zone de texte sur le fichier .aspx lui-même (niveau 3), le gestionnaire d'événements ira également dans la page (ou son code derrière). Peu importe que l'étiquette de forme est sur le masterpage global (niveau 1)

Quant à votre deuxième question: Vous pouvez utiliser

var tb = this.FindControl("textbox1") as TextBox; 
+0

vérifier # 1. pour # 2, pas de frappe forte disponible? cela semble fait pour un pointeur nul quand quelqu'un change le nom? – b0x0rz

+0

pour # 1: je fais ceci: SignIn et le code : void AuthorizeUser (expéditeur d'objet, EventArgs e) {[...]} mais contenant une erreur: CS1061: 'ASP.manage_signin_default_aspx' ne contient pas de définition pour 'AuthorizeUser' et aucune méthode d'extension 'AuthorizeUser' acceptant un premier argument de tapez 'ASP.manage_signin_default_aspx 'pourrait être trouvé (manque-t-il une directive using ou une référence d'assembly?) – b0x0rz

+0

C'est pourquoi je pensais que cela ne fonctionne pas sur la page' niveau 3 '. pas sûr de ce qui ne va pas alors ... – b0x0rz