3

мне нужны примеры или ИДЕИ о том, как создается динамический контроль, который будет строку навигации динамически генерируемый сухари для динамической структуры Дата питание от LinqToSqlКак создать панировочные сухари, используя динамическую базу данных/LINQTOSQL?

ответ

1

Вы, вероятно нужны три вещи:

  1. Иерархия структуры в базе данных *
  2. Произвольный поставщик SiteMap на основе StaticSiteMapProvider читать иерархии
  3. A 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; 
    } 
} 

GetSiteMap и GetSiteMapChildrenByPath вызов в хранимые проками построить иерархию, потянув ее с LINQ должен был быть довольно сложным.

0

Привет у вас была взглянуть на мой обычай SitMapProvider here

Это позволяет получить структуру из метамодели с аннотацией и отдельный файл карты сайта для не страниц DD.