24

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

4

2 回答 2

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);
}

该实现将面包屑对象放入会话中。网址是HttpContext.Current.Request.RawUrl

于 2008-09-15T22:32:19.060 回答
2

@Chris:是这样的:

        <% 
        foreach (var item in ViewData.Get<Breadcrumb[]>())
            {
        %>
                <a href="<%= Server.HtmlEncode(item.Url) %>"><%= item.LinkText %></a> &raquo;
        <% 
            } 
        %>
于 2008-09-21T04:56:12.877 回答