【问题标题】:How to create breadcrumbs using Dynamic Data/LINQTOSQL framework?如何使用动态数据/LINQTOSQL 框架创建面包屑?
【发布时间】:2010-01-29 21:32:04
【问题描述】:

我需要一些关于如何创建动态面包屑控件的示例或想法,该控件将为由 LINQTOSQL 提供支持的动态日期框架动态生成面包屑

【问题讨论】:

    标签: asp.net linq-to-sql dynamic-data breadcrumbs asp.net-dynamic-data


    【解决方案1】:

    你可能需要三样东西:

    1. 数据库中的层次结构*
    2. 基于StaticSiteMapProvider 的自定义 SiteMap 提供程序来读取层次结构
    3. SiteMapPath 控件用于显示面包屑。

    * 当我想为客户站点提供类似的东西时,我做了一些搜索,并决定将路径结构存储在数据库中是最简单的 - 我已经为任意深度的站点地图提供了 answer previously here -请注意,如果您使用的是 SQL2008,则可以使用新的 HierarchyId 数据类型来简化此操作。

    话虽如此,如果您有类别和产品之类的东西,您可能可以在数据库中使用更简单的系统。

    我需要创建的关键函数来解决这个问题:

    /// <summary>
    /// Gets this SiteMaps children.
    /// </summary>
    /// <value>The children.</value>
    public List<SiteMap> Children {
      get {
        if (null == m_Children && !m_AttemptedToLoadChildren) {
          m_AttemptedToLoadChildren = true;
    
          m_Children = ctx.GetSiteMapChildrenByPath(_Path, 1).ToList();
    
          // Sorts ascending.
          m_Children.Sort(( sm1, sm2 ) => sm1.SortOrder.CompareTo(sm2.SortOrder));
          // CMS Sorts Descending, so reverse the list.
          m_Children.Reverse();
        }
    
        return m_Children;
      }
    }
    
    /// <summary>
    /// Gets a value indicating whether this instance has any children.
    /// </summary>
    /// <value>
    ///  <c>true</c> if this instance has children; otherwise, <c>false</c>.
    /// </value>
    public bool HasChildren {
      get {
        if (null != Children && Children.Any()) {
          m_HasChildren = true;
        }
    
        return m_HasChildren;
      }
    }
    
    /// <summary>
    /// Gets this SiteMaps parent.
    /// </summary>
    /// <value>The parent.</value>
    public SiteMap Parent {
      get {
        if (null == m_Parent && null != _ParentId) {
          m_Parent = ctx.GetSiteMap(_ParentId);
        }
    
        return m_Parent;
      }
    }
    

    GetSiteMapGetSiteMapChildrenByPath 调用存储过程来构建层次结构,因为使用 LINQ 将其拉出会非常复杂。

    【讨论】:

      【解决方案2】:

      嗨,你看过我的自定义 SitMapProvider here

      这允许您从带有注释的元模型和非 DD 页面的单独站点地图文件中获取结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多