我有一个控制器,它按如下方式创建面包屑:
Software > Windows 7 > Outlook 2007
创建此代码的代码是:
ViewBag.breadcrumbs = string.Join(" > ", cbh.Select(i => i.Title));
是否有一种简单的方法来制作面包屑超链接,它指向(i.ParentID)即:
Software -> forum/index/12
Windows 7 -> forum/index/19
Outlook 2007 -> forum/index/23
或者我应该循环浏览 cbh 并手动构建< a href = ...> 字符串,并将其传递给视图?
谢谢,
标记
答案 0 :(得分:3)
最好的办法是将所需的物品放入模型中然后循环使用。
尝试这样的事情:
<强>模型强>
public class Model
{
public struct BreadCrumb
{
public string Title;
public string Url;
}
public List<BreadCrumb> Breadcrumbs { get; set; }
}
查看强>
@{ int index = 0; }
@foreach(var crumb in this.Model.Breadcrumbs)
{
<a href="@(crumb.Url)" title="@(crumb.Title)">@(crumb.Title)</a>
if(index < this.Model.Breadcrumbs.Count - 1)
{
<span>></span>
}
index++;
}
答案 1 :(得分:1)
是的,您应该在视图中构建面包屑链接。如果有帮助,您可以创建一个BreadCrumbModel
类(如果您还没有)。
ViewBag.breadcrumbs = cbh.Select(i => new BreadCrumbModel()
{
Id = i.Id,
Title = i.Title
});
@{
var printSeparator = false;
}
@foreach(BreadCrumbModel bc in ViewBag.breadcrumbs)
{
@if(printSeparator)
{
<span class="breadcrumb-separator"> > </span>
}
<span class="breadcrumb">
@Html.ActionLink(bc.Title, "index", "forum", new { id = bc.Id });
</span>
@{
printSeparator = true;
}
}
如果您希望在不同的控制器和操作(不仅仅是论坛/索引)之间存在面包屑,请将其添加为BreadCrumbModel
的属性。