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

Posted

技术标签:

【中文标题】您将如何在 asp.net mvc 中实现面包屑助手?【英文标题】:How would you implement a breadcrumb helper in asp.net mvc? 【发布时间】:2010-09-09 02:57:34 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我们为此使用了动作过滤器。

...

    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

【讨论】:

IBreadcrumbManager 的实现是否在我们可以查看的地方? _breakcrumbLinkText 来自哪里? 您能否为面包屑助手提供此解决方案的更详细示例?你有什么可以分享的测试解决方案吗?我真的不明白 _breadcrumbManager/IBreadcrumbManager 接口..【参考方案2】:

@Chris:像这样:

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

【讨论】:

以上是关于您将如何在 asp.net mvc 中实现面包屑助手?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 5 中实现自定义身份验证

如何在 ASP.NET MVC 中实现自定义主体和身份?

如何使用 ASP.NET MVC 在 Kendo UI Grid 中实现 N 级嵌套层次结构

在 ASP.NET MVC 中实现“记住我”功能

如何在ASP.NET MVC中实现报表打印和导出

如何在我的 ASP.NET MVC 应用程序中实现“全选”复选框?