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)


в баща reservedRouteParameters="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