2008-11-21 5 views

Répondre

1

La réponse à votre question dépend beaucoup de la façon dont vous avez implémenté votre liste {Contrôle utilisateur ou non, etc.}. Comment je le ferais, implémenter la liste à générer par un contrôle utilisateur.

j'aurais la balise UserControl chaque élément avec quelque chose comme:

<{...} class="GeneratedMenuItem"> {...} 

Et j'avoir les styles appropriés dans la feuille de style; Bien sûr, si c'était dans un contrôle utilisateur, vous pourriez être en mesure d'utiliser des thèmes (mais cela dépend de la version d'ASP.net que vous utilisez.)

+0

Comment utiliser utiliser des thèmes? Ce serait une application ASP.NET 2.0 (VS 2008 .Net 3.5) –

+0

Cela fait un moment que j'ai utilisé des thèmes mais je suppose que l'on pourrait définir un thème pour leur contrôle utilisateur. Maintenant que j'y pense, je pense que les thèmes sur les contrôles utilisateur ne fonctionnaient pas pour ASP.NET 2.0. Si elles ont été implémentées dans .NET 3.5, je ne suis pas sûr. –

1

Bonne question, j'ai joué avec différentes méthodes pour le faire depuis les mauvais vieux jours de l'ASP, et je suis encore à trouver le marteau parfait

En général, j'ai utilisé le Request.Url.AbsoluteUri (ou similaire) comme un argument de ce que la fonction de rendu était, et le plus souvent définir un CSS J'ai utilisé le plus souvent une combinaison xml/xsl, qui peut généralement être utilisée contre la plupart des plates-formes cms, bien que je sois Je n'ai jamais été aussi heureux avec la surcharge d'une transformation xsl juste pour sortir une liste de nav, mais si vous connaissez xsl, c'est un très bon outil pour générer html, et vous pouvez toujours mettre en cache la sortie - pour les petits sites html statiques venir occasionnellement, j'utilise souvent cette approche dans un processus de construction pour rendre le balisage de menu statique. Vous avez également utilisé la fonctionnalité sitemap aspnet à quelques reprises, ce qui est très bien si vous utilisez les adaptateurs css friendly avec elle - le rendu par défaut est très balistique.

J'ai trouvé cet article plus tôt ce weeek: http://blog.devarchive.net/2008/01/auto-generate-strong-typed-navigation.html qui utilise des modèles t4 pour faire une classe de navigation fortement typée, et je vais certainement étudier cela plus loin.

0

La façon dont j'ai pris cette approche était de créer des contrôles de lien hypertexte ASP.NET pour chacun de mes éléments de navigation dans ma page maître.

Dans la page principale, je puis créé une méthode publique qui attribuerait le style CSS « ​​sélectionné » approprié au contrôle je précise:

Public Sub SetNavigationPage(ByVal MenuName As String) 

    DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent" 

End Sub 

Puis dans mes pages de contenu, je devais simplement faire référence à la master page en conséquence.

Dim myMaster As EAF = DirectCast(Me.Master, EAF) 
myMaster.SetNavigationPage("hypSearchRequest") 

Cela m'a donné la possibilité d'ajouter/supprimer des éléments de navigation sur les différentes pages et aussi être capable d'affecter plusieurs pages à l'option de navigation administrateur en cas de besoin.

Il est également intéressant de noter que le référencement du contrôle de lien hypertexte et la définition de l'attribut Visibilité (pour masquer les pages administratives) ne fonctionnaient pas. Cela est dû à l'ordre de chargement des pages maître et contenu. Au lieu de cela, j'ai créé une autre classe CSS qui définit simplement la propriété de visibilité et a utilisé la même approche que ci-dessus.

+0

Si vous définissez la propriété de visibilité en CSS, le menu sera toujours visible dans le balisage mais n'apparaîtra pas dans le navigateur. Cela permettra aux personnes regardant votre balisage de savoir qu'il y a plus de menus disponibles. Je pense que la visibilité côté serveur est une meilleure approche. –

Questions connexes