面包屑的局部视图应该给出上下文(作为模型,可能是带有文本和 URL 的面包屑列表)。
如果我们假设每个视图都知道它的面包屑,您可以将面包屑数据从视图传递到部分视图:
如果您在布局页面中呈现面包屑,视图应该将面包屑数据传递给布局页面。我会用ViewBag
那个。
所以,这就是我的做法(如果面包屑不是很深并且相对稳定):
SomeView.cshtml
ViewBag.Breadcrumbs = new List<Breadcrmb>() {
new Breadcrumb(){ Title = "Home", Url = Url.Action("Index", "Home") },
new Breadcrumb(){ Title = TopicModel.Forum.Title,
Url = Url.Action("Forum",
new { id = TopicModel.ForumId }) },
new Breadcrumb(){ Title = TopicModel.Title,
Url = Url.Action("ViewTopic",
new { id = TopicModel.Id }) }
};
_Layout.cshtml
@Html.RenderPartial( "_Breadcrumbs", ViewBag.Breadcrumbs )
_面包屑.cshtml
@Model IEnumerable<Breadcrumb>
@* Render breadcrumbs *@
面包屑数据可以以更灵活的方式生成,但您没有问过这个问题,所以我不打算深入探讨这部分。只需说获取视图的面包屑的父列表,然后添加您自己的会更好。