MVC SiteMap Provider — может ли кто-нибудь опубликовать образец, который работает с динамическими узлами?

Это очень простой сценарий:

public class StockItemController : Controller
{
    public ActionResult Index(int categoryId)
    {
    /// ...
    }
}

Примеры маршрутов:

/StockItem?categoryId=1 // должно быть "Напитки" /StockItem?categoryId=1 // должно быть "Обувь"

Вот сокращенная карта сайта:

  <mvcSiteMapNode title="Home" controller="Home" action="Index">    
  <mvcSiteMapNode title="Template" action="Index" controller="StockItem" dynamicNodeProvider="uTani.UI.Common.BreadCrumbCategoryProvder, Store.UI" />    

and the part of the class:

public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
    {
        foreach (Category category in _repository.GetCategories())
        {
            string key = "Category" + category.Id;
            string title = category.DescriptionRU;
            DynamicNode node = new DynamicNode(key, title);
            node.RouteValues.Add("categoryId", category.Id);

            yield return node;
        }           
    }

Что все это делает, так это правильно генерирует меню сайта с помощью @Html.MvcSiteMap().Menu(), но проблема в том, что @Html.MvcSiteMap().SiteMapPath() (хлебные крошки) всегда показывает самый первый динамический узел независимо от маршрута...

Я не знаю, чего мне здесь не хватает, и документации по этому вопросу недостаточно. У кого-нибудь есть образец или может указать, что я делаю неправильно?

Спасибо,

-Стэн


person StanB    schedule 25.08.2011    source источник


Ответы (2)


в отце сохранилRouteParameters="id"

person Community    schedule 10.01.2012

Я понял. Маршрута с параметром categoryId не было, а ссылки были "/StockItem?categoryId=1". Это сработало, но сбрасывало карту сайта, потому что ожидалось «/StockItem/Category/1», и, поскольку никого не было, он возвращал первый узел. Я просто изменил public ActionResult Index(int categoryId) на public ActionResult Index(int id), и все заработало...

-Стэн

person StanB    schedule 26.08.2011
comment
Я также борюсь с этой проблемой, если у вас есть только один или два настраиваемых маршрута, можно внести это изменение, но у меня было более 10 настраиваемых маршрутов, что сводит меня с ума. - person Vincent; 10.01.2012