1

以上のサイトマップを作成し、私は以下のように定義されたキャッチすべてのルートがあります。コントローラ内部ASP.NET MVCは、すべてのパラメータをキャッチし、ASP.NET MVCではその

routes.MapRoute(
    "TagsRoute", 
    "tags/{*tags}", 
    new { controller = "home", action = "tags"} 
); 

を、私はどの製品を照会しています以下のように{tags}に入った:

public ViewResult(string[] tags) { 

    var model = _repo.Get(tags); 

    return View(model); 
} 

私は苦労していますどのようなことはMVCSiteMapProviderDynamicNodeProviderBaseクラスでこれ以上のサイトマップを作成する方法です。

答えて

2

サイトマップノード:

public class TagsDynamicNodeProvider 
    : DynamicNodeProviderBase 
{ 
    public override IEnumerable<DynamicNode> GetDynamicNodeCollection() 
    { 
     DynamicNode node = new DynamicNode(); 
     node.Title = "Some title"; 
     node.RouteValues.Add("tags", new string[]{"tag1", "tag2"}); 

     yield return node; 
    } 

    public override CacheDescription GetCacheDescription() 
    { 
     return null; 
    } 
} 
+0

感謝:

<mvcSiteMapNode title="Tags" action="Tags" controller="Home" dynamicNodeProvider="Your.Namespace.TagsDynamicNodeProvider, YourAssemblyName" />

プロバイダ自体は、これらの線に沿って何かだろう!私が達成しようとしていることは少し異なります。私は、 'tags> tag1> tag2> tag3'のようなサイトマップパンくずリストを持っていたいと思います。また、この動的ノードは、「http:// localhost:28874/tags/System.String%5B%5D'」というサイトマップの「loc」エントリを1つだけ生成します。 OOBの機能ではこれを行うことはできないと思います。 – tugberk

+0

この場合、ノードの.Keyと.ParentKeyプロパティを使い、自分で階層を構築することができます。 – maartenba

+0

ええと、私は約50のタグを持っていて、50個のタグが保持しているすべてのオプションを反復するアイデアは、スタートアップ時のパフォーマンス上の負担のように聞こえます。コントローラのアクションを別に設計する必要があります。 5.ありがとう! – tugberk

関連する問題