2009-04-01 5 views
1

J'ai besoin d'ajouter des appels JavaScript dans certains attributs de contrôles, j'utilise des pages maîtres, mais pour obtenir l'id de client contentholder, je suis en train d'itérer sur les contrôles de formulaires. est-il un autre moyen d'obtenir dans le code côté serveur de la page de contenu?comment obtenir l'id de client d'un ContentPlaceHolder d'une manière facile?

foreach (Control control in this.Form.Controls) 
       { 
        if (control is ContentPlaceHolder) 
        { 
         contentPlaceHolderID = control.ClientID; 
         break; 
        } 
       } 

Répondre

2

S'il n'y a que peu de contrôles comme celui-ci, vous pouvez configurer une variable globale:

var contentPlaceholderId = '<%= this.ContentPlaceholder1.ClientId %>' 
+0

Cela fonctionne à partir de la page maître (sans le préfixe "this") mais échoue si j'essaie de l'ajouter dans le contentplace1 lui-même. – Frug

0

Je fais ce qui suit dans jQuery:

$("*[id$='DivFullWarning']").each(function() { 
    // do whatever in here 
}); 

cette recherche pour un contrôle qui contient DivFullWarning dans leur carte d'identité, de sorte que vous pouvez nommer votre ContentPlaceHolder « ContentPlaceHolder » et peu importe combien asp. net muck's avec votre id, vous serez toujours en mesure de l'attraper côté client.

Vous pourriez simplement exposer le contenu placeHolder quelque part afin que vous n'ayez pas à faire défiler tous les contrôles.

+1

Une pensée rapide, wouldnt qui correspondent aussi tous les ids générés automatiquement à l'intérieur du ContentPlaceHolder? – sisve

+0

hah, c'est un bon point =) – sontek

Questions connexes