これは非常に単純なシナリオです。
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()
(ブレッドクラム)がルートに関係なく常に最初の動的ノードを表示することです...
ここで何が欠けているのかわからず、これに関する十分なドキュメントがありません..誰かがサンプルを持っているか、私が間違っていることを指摘できますか?
ありがとう、
-スタン