2

这是一个非常简单的场景:

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" />    

和班级的一部分:

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()(面包屑)始终显示第一个动态节点,无论路线是什么......

我不知道我在这里缺少什么,也没有足够的文档。有没有人有样本或可以指出我做错了什么?

谢谢,

-斯坦

4

2 回答 2

1

在父亲preservedRouteParameters="id"

于 2012-01-10T12:55:01.690 回答
0

我想到了。没有带有 categoryId 参数的路由,链接为“/StockItem?categoryId=1”。那行得通,但是因为它需要“/StockItem/Category/1”而将站点地图扔掉了,并且由于没有人,因此它正在返回第一个节点。我只是更改public ActionResult Index(int categoryId)public ActionResult Index(int id),一切都开始工作了...

-斯坦

于 2011-08-26T00:29:45.087 回答