De la chapelure en C# MVC Site web à l'aide de Bootstrap
Je suis à la recherche d'ajouter de la chapelure pour mon site, mais je ne suis pas tout à fait sûr de savoir comment aller à ce sujet. J'ai été en mesure d'obtenir quelque chose de travail de base avec le code suivant:
<ol class="breadcrumb">
<li class="active">
@Html.ActionLink("Home", "Index", "Home")
@if (ViewContext.RouteData.Values["controller"] != "Home" && ViewContext.RouteData.Values["action"] != "Index")
{
@:> @Html.ActionLink(ViewContext.RouteData.Values["controller"].ToString(), "Index", ViewContext.RouteData.Values["controller"].ToString())
}
> @ViewBag.SubTitle
</li>
</ol>
Le problème que j'ai, c'est que ce n'est pas réellement le suivi de votre histoire, ça montre juste que vous
Home > ControllerName > CurrentItem
par exemple
Home > Members > Greg Dodd
Cela fonctionne bien quand vous venez d'une membre de la page de recherche, cependant, si vous venez d'un autre page, puis vous perdre que de l'histoire. Comment voulez-vous créer un fil d'ariane à l'aide de l'Histoire dans MVC?
Je crois que je suis à la recherche de quelque chose comme:
Home > Controller1 > PreviousItem > ... > CurrentItem
par exemple
Si vous avez ouvert un blog, puis un blog en particulier de l'élément, puis cliqué sur le nom d'auteur, votre chapelure doit être:
Home > Blog > SomeBlogTitle > AuthorName
Toutefois, si vous avez ouvert une liste d'auteurs et choisi un auteur particulier, vous pouvez voir la même vue rendus à l'aide de la même contrôleur, mais la chapelure doit montrer:
Home > Authors > AuthorName
Je l'ai regardé, mais je ne pouvais pas voir comment l'utiliser pour faire ce que je suis après. Je ne peux pas la carte chaque objet dans une base de données dynamique. Est-il un tutoriel qui montre comment le faire?
J'ai mis à jour ma réponse.
OriginalL'auteur Greg | 2014-02-01
Vous devez vous connecter pour publier un commentaire.
après l'installation via nuget :
ensuite, vous pouvez mettre cette ligne dans votre Mise en page:
aussi, vous pouvez le personnaliser en extraire des données à partir de la base de données, vous devez créer une classe qui dérive de
DynamicNodeProviderBase
:GetSiteMapData :
puis changer MvcSiteMap fichier dans votre projet :
J'ai mis à jour ma réponse.
Merci pour la mise à jour, mais je suis toujours en manque un morceau du puzzle. Ce n'GetSiteMapData(int)?
c'est une méthode qui retourne un type anonyme instance à l'aide de
select new
que nous devons les utiliser dansDynamicNode
, vérifiez la réponse maintenant.Ne fonctionne pas pour MVC5.
OriginalL'auteur Sirwan Afifi
J'ai créé un OSS projet visant à résoudre le problème par moi-même. J'avais besoin de plus de contrôle dynamique de l'étiquette dans la barre de navigation:
https://www.nuget.org/packages/MvcBreadCrumbs
ou, de contribuer ici:
https://github.com/thelarz/MvcBreadCrumbs
Ok, donc le fait que j'ai rédigé une solution complète pour le problème installable dans son application avec nuget est tout simplement insuffisant. L'a obtenu.
il veut dire poster des extraits de code.
Notez que ce logiciel est sous licence GPL. Cela signifie que si vous l'incluez dans votre projet, vous devez également une licence pour le reste de votre projet sous GPL.
Si vous prenez votre projet, cette réponse n'aura plus de sens.
OriginalL'auteur Larz
Si vous voulez une solution simple, vous pouvez utiliser ce code. C'est juste pour défaut de la configuration du routage.
OriginalL'auteur agenc
Travail pour vous avec bootstrap
OriginalL'auteur Thanhnx
Pour MVC 5, vous devez utiliser: Install-Package MvcSiteMapProvider.MVC5
OriginalL'auteur Abdesselam