使用 MapWebPageRoute 映射路由时使用通配符
Using wildcards when mapping routes with MapWebPageRoute
在一个 ASP.NET 网页项目(不是 Web 窗体,不是 MVC)中,我使用的是 Mike Brind 的
More Flexible Routing For ASP.NET Web Pages.
我想创建一条路线,该路线可以选择任意数量的路线元素但以特定单词结尾,例如:
- 我的域名。com/route1/word
- 我的域名。com/route1/route2/word
- 我的域名。com/route1/route2/route3/word
- ...等等等等
我在映射路线时尝试使用通配符,但没有用,例如:
RouteTable.Routes.Ignore("{*routes}/word");
有没有办法映射这些可能的路线,或者我是否必须为每个可能的路线创建一条路线,例如:
RouteTable.Routes.MapWebPageRoute("{route1}/word", "~/mypage.cshtml");
RouteTable.Routes.MapWebPageRoute("{route1}/{route2}/word", "~/mypage.cshtml");
RouteTable.Routes.MapWebPageRoute("{route1}/{route2}/{route3}/word", "~/mypage.cshtml");
- ...等等等等
我终于找到了解决办法。
RouteTable.Routes.MapWebPageRoute("{*routes}",
"~/mypage.cshtml",
constraints: new { routes = @".*(/word)" });
所以使用约束就是答案。
在一个 ASP.NET 网页项目(不是 Web 窗体,不是 MVC)中,我使用的是 Mike Brind 的 More Flexible Routing For ASP.NET Web Pages.
我想创建一条路线,该路线可以选择任意数量的路线元素但以特定单词结尾,例如:
- 我的域名。com/route1/word
- 我的域名。com/route1/route2/word
- 我的域名。com/route1/route2/route3/word
- ...等等等等
我在映射路线时尝试使用通配符,但没有用,例如:
RouteTable.Routes.Ignore("{*routes}/word");
有没有办法映射这些可能的路线,或者我是否必须为每个可能的路线创建一条路线,例如:
RouteTable.Routes.MapWebPageRoute("{route1}/word", "~/mypage.cshtml");
RouteTable.Routes.MapWebPageRoute("{route1}/{route2}/word", "~/mypage.cshtml");
RouteTable.Routes.MapWebPageRoute("{route1}/{route2}/{route3}/word", "~/mypage.cshtml");
- ...等等等等
我终于找到了解决办法。
RouteTable.Routes.MapWebPageRoute("{*routes}",
"~/mypage.cshtml",
constraints: new { routes = @".*(/word)" });
所以使用约束就是答案。