How would you implement a breadcrumb helper in asp

2019-01-30 19:51发布

问题:

I know you could make a helper pretty easily given the data. So, if possible, please only submit answers that also include getting the data.

回答1:

We are using an action filter for this.

...

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

before you mention it, I too have a distaste for service location in the filter attributes - but we are left with few options. IBreadcrumbManager looks like this:

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

The implementation puts Breadcrumb objects into the Session. The Url is HttpContext.Current.Request.RawUrl



回答2:

@Chris: something like this:

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