ASP.NET: mettez en Surbrillance l'élément de menu de la page en cours
J'ai essayé de trouver un moyen facile de mettre en évidence le menu actuellement sélectionné élément d'un asp.net menu (de sorte que l'utilisateur connaît la page), mais peu importe ce que j'ai essayé je ne peux pas le faire fonctionner. Dans mon balisage j'ai:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" StaticSelectedStyle-ForeColor="#99CCFF" DynamicSelectedStyle-ForeColor="#99CCFF">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Operations"/>
<asp:MenuItem NavigateUrl="~/Analysis.aspx" Text="Analysis"/>
<asp:MenuItem NavigateUrl="~/Dashboard.aspx" Text="Dashboard"/>
<asp:MenuItem NavigateUrl="~/Flashboard.aspx" Text="Flashboard"/>
<asp:MenuItem NavigateUrl="~/Spacequest.aspx" Text="SQ OBP"/>
</Items>
</asp:Menu>
Et dans le côté serveur Page_Load de la fonction:
((Menu)Master.FindControl("NavigationMenu")).Items[0].Selected = true;
Mais cela ne fonctionne pas. J'ai essayé d'utiliser un sitemap (même si un sitemap n'est pas ce que je veux utiliser) et cela n'a pas fonctionné non plus. Des idées?
OriginalL'auteur Jon Martin | 2011-08-15
Vous devez vous connecter pour publier un commentaire.
Il y a un
StaticSelectedStyle
de la propriété que vous pouvez utiliser à l'intérieur de votre menu.Voir ici pour plus d'info.
Aussi, si il ya une classe appliqué à l'élément sélectionné (dont je ne suis pas sûr si il y est mais il serait à portée de main), vous pouvez il suffit de brancher dans votre CSS. Ce serait beaucoup plus agréable que d'utiliser le
StaticSelectedStyle
propriété.Mise à JOUR
Il est intéressant de noter également que l'utilisation de
IncludeStyleBlock="false"
vais arrêter votre menu de générer le CSS nécessaire pour le contrôle de l'élément sélectionné.Avec le style de bloc hors tension, vous devez fournir vos propres styles et de l'auto-générés styles du menu ne sera pas utilisé.
À partir de MSDN:
Source: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.includestyleblock.aspx
Avez-vous tred de la façon que je suis sugesting ici? C'est légèrement différent de la façon dont vous l'avez fait de manière intégrée sur le menu de la balise.
Je vais lui donner un aller.
Cela ne semble pas fonctionner non plus. Suis-je manqué quelque chose?
Voir ma mise à jour également. Vous avez IncludeStyleBlock="false" qui sera le menu de génération de l'nécessaires blocs CSS de l'élément sélectionné .
OriginalL'auteur Jamie Dixon
Je pense que vous aurez à effectuer une boucle sur les éléments du menu et voir si le courant URL de la page contenant le NavigateUrl de l'élément de menu.
Heureux de l'entendre à l'homme. J'aime bien ton exemple de code, car il fonctionne dans tous les scénarios. Je vais mettre à jour ma réponse, et d'apprécier la suggestion.
OriginalL'auteur James Johnson
Je voudrais utiliser jQuery dans cette instance.
Pour la page indiquée, ainsi, par exemple, sur l'Analyse.page aspx, ajouter ce peu de jquery pour votre page.
Pouvez-vous préciser l'ID des éléments de menu?
Tels que:
Vous pouvez alors utiliser ceci:
puis, bien sûr, il suffit de définir ce que
active
est dans votre css:OriginalL'auteur Jack Marchetti
Si vous envisagez de le faire de façon dynamique, alors c'est la meilleure façon:
ajouter ensuite il suffit d'ajouter .MySelectedClass style à votre fichier Css
..
OriginalL'auteur Adel
//item.NavigateUrl.ToLower() contient "~". Donc, trouver des sous-chaîne et vérifier.
OriginalL'auteur D Kavitha Vijay Datchnamoorthy