MVC SiteMap提供程序-任何人都可以发布一个与动态节点一起工作的示例



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

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

样本航线:

/StockItem吗?categoryId=1//应该是"饮料"/StockItem吗?categoryId=1//应该是"Shoes"

以下是缩略的站点地图:

  <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() (breadcrumb)总是显示第一个动态节点,无论路由是什么…

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

谢谢,

斯坦

in father preservedRouteParameters="id"

我明白了。日志含义没有带categoryId参数的路由,链路为"/StockItem?categoryId=1"。这是有效的,但抛出站点地图,因为它预期"/StockItem/Category/1",因为没有人,它返回第一个节点。我只是把public ActionResult Index(int categoryId)改为public ActionResult Index(int id),一切都开始工作了…

斯坦

相关内容

  • 没有找到相关文章

最新更新