ASP.NET MVC 捕获所有参数并在其上创建站点地图

发布于 2024-12-28 04:32:19 字数 530 浏览 2 评论 0原文

在 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 类创建站点地图。

有什么想法吗?

In ASP.NET MVC, I have a defined catch-all route as below:

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

Inside the controller, I am querying the products which has entered {tags} as below:

public ViewResult(string[] tags) { 

    var model = _repo.Get(tags);

    return View(model);
}

What I am struggling with is how to create a sitemap over this with MVCSiteMapProvider DynamicNodeProviderBase class.

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔女人霸气范 2025-01-04 04:32:19

站点地图节点:

提供程序本身将是一些东西这些行:

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

The sitemap node:

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

The provider itself would be something along these lines:

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;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文