2009-08-20 9 views
2

J'ai une page maître appelé SampleMaster.master et cette page contient un contrôle RepeaterQuelle est la meilleure approche pour remplir un contrôle de page maître qui dépend de la page de contenu?

Le contrôle Repeater sera utilisé pour afficher les balises pertinentes associées à chaque page de contenu et les balises varient entre les pages de contenu

La méthode d'extraction de données Tags.GetTags() fonctionne mais je ne connais pas la meilleure approche pour remplir le contrôle Repeater dans la page maître en fonction de la page de contenu.

Le code se trouverait-il dans le code de la page de la maquette ou dans le code de la page de contenu?

Répondre

5

Je suggérerais d'exposer une propriété ou une méthode sur la page enfant qui transmet les étiquettes à la page maître. Par exemple

partial class myPage : IMyTaggablePage 
{ 
    // the following is an interface member 
    public List<string> GetTags() 
    { 
     return this.Taglist; // assuming taglist was populated somewhere on this page. 
    } 
} 

ensuite sur votre page principale, vous pouvez écrire quelque chose comme:

if (this.Page is IMyTaggablePage) 
    var tags = (Page as IMyTaggablePage).GetTags(); 
+0

bonne solution. Vous auriez besoin de cast this.Page à IMyTaggablePage afin d'appeler la méthode. –

+0

Merci. Manqué ça. – Joel

+0

Cela nécessiterait que vous maîtrisiez page sur les pages de contenu où si vous avez fait la page de contenu envoyer des données au maître, votre maître ne se soucierait pas du nombre de pages de contenu possibles que vous avez ou ce qu'ils font. Vous devez simplement exposer l'interface pour que les pages de contenu personnalisent la page maître. – Kelsey

0

Vous devriez le mettre dans la page maître si vous le pouvez. Idéalement, votre page de contenu ne devrait pas avoir connaissance du parent et devrait supposer qu'il pourrait être utilisé n'importe où.

Cela conduira à un design plus réutilisable et plus complexe pour vos pages de contenu.

0

Vous pouvez exposer la fonctionnalité dans votre page maître via votre page de contenu en ajoutant les éléments suivants de contenu pour vous les pages de fichiers ASPX: Ensuite, dans votre page de contenu, vous devriez être en mesure d'accéder à toutes les méthodes que vous avez exposées à partir de votre page maître.

Vous maîtrisez ainsi la page aurait une méthode comme:

public void BuildMyCustomStuff(YouInputType in) 
{ 
    // Do something with the data passed in 
} 

Ensuite, dans la page de contenu que vous appelez la fonction avec:

Master.BuildMyCustomStuff(dataIn); 
Questions connexes