【问题标题】:ASP.NET webforms wildcard routeASP.NET 网络表单通配符路由
【发布时间】:2010-09-29 10:34:25
【问题描述】:

我在 webforms 应用程序中使用 asp.net 路由。

我想实现如下url格式:

http://[域]/{parent-category}/{sub-category}/{sub-category}

最右边的类别可用作路线值。

目前我通过以下路线实现了这一目标:

        routes.MapPageRoute(
            "category-browse",
            "{*category}",
            "~/category.aspx"
        );

这将传递所有类别,即“trainers/running/nike-running-trainers”,因此我可以通过一些字符串操作来获取最后一个类别。

有更好的方法吗?

【问题讨论】:

  • 如果您需要灵活使用“可选”值的能力——这样如果用户不提供 {sub-category} 则显示所有子类别——那么你的技术非常好。只需使用 String.split 来分隔参数
  • 这正是我们目前正在做的事情。我认为这是我们能做的最好的事情,因为通配符参数需要是路由的最右边部分。
  • 您有没有找到更好的选择?我自己正在对此进行调查,很好奇你最终使用了什么方法。

标签: asp.net asp.net-mvc routing


【解决方案1】:

我假设您可以拥有任意数量的子类别参数。如果是这种情况,那么您正在做的方法是正确的。 ASP.NET Routing 不支持在 URL 中间使用 catch-all 参数。它必须在最后。因此,您所描述的是唯一的方法,而不是编写您自己的自定义 RouteBase 实现。

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多