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

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

【问题讨论】:

    标签: asp.net-mvc navigation


    【解决方案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;
            <% 
                } 
            %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      相关资源
      最近更新 更多