你将如何在asp.net mvc中实现面包屑助手?

时间:2008-09-15 19:33:51

标签: asp.net-mvc navigation

我知道你可以很容易地根据数据做出帮助。因此,如果可能,请仅提交包含获取数据的答案。

2 个答案:

答案 0 :(得分:12)

我们正在使用动作过滤器。

...

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var controller = (Controller) filterContext.Controller;
        Breadcrumb[] breadcrumbs = _breadcrumbManager.PushBreadcrumb(_breadcrumbLinkText);
        controller.ViewData.Add(breadcrumbs);
    }

在你提到它之前,我也对过滤器属性中的服务位置感到厌恶 - 但我们只剩下几个选项。 IBreadcrumbManager如下所示:

public interface IBreadcrumbManager
{
    Breadcrumb[] PushBreadcrumb(string linkText);
}

实现将Breadcrumb对象放入Session。网址为HttpContext.Current.Request.RawUrl

答案 1 :(得分:2)

@Chris:这样的事情:

        <% 
        foreach (var item in ViewData.Get<Breadcrumb[]>())
            {
        %>
                <a href="<%= Server.HtmlEncode(item.Url) %>"><%= item.LinkText %></a> &raquo;
        <% 
            } 
        %>