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

时间:2020-03-05 18:54:19  来源:igfitidea点击:

我知道我们可以根据数据轻松地创建一个助手。因此,如果可能,请仅提交还包括获取数据的答案。

解决方案

回答

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

...

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

回答

@Chris:像这样的东西:

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