ASP.NET MVC Catch All Parameter и создание карты сайта поверх этого - PullRequest
1 голос
/ 20 января 2012

В 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);
}

С чем я сталкиваюсь, это как создать карту сайта с помощью MVCSiteMapProvider DynamicNodeProviderBase class.

Есть идеи?

1 Ответ

2 голосов
/ 20 января 2012

Узел карты сайта:

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

Сам провайдер будет что-то вроде этого:

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;
    }
}
...