问题描述
我正在编写下面的代码来映射 URL 的路由,该 URL 在我的 asp.net MVC 应用程序的 URL 中的任何位置都有一个名为“Listing-Filter”的关键字,如下所示 -
routes.MapRoute(
name: "Core_ListingPage",url: "{pageUrl}",defaults: new {controller = "ListingPage",action = "Page" },constraints: new { pageUrl = @"^(.listing-filter.)?$" }
).DataTokens.Add("area","community");
它没有用,所以我怀疑我的 Regex 表达式并将其替换为如下所示的完整页面 URL,只是为了检查约束是否有效 -
routes.MapRoute(
name: "Core_ListingPage",constraints: new { pageUrl = /home/items/kichen/listing-filter/price-range-25-to-100/price-range-100-to-200" }
).DataTokens.Add("area","community");
但它也不起作用,我的结论是 URL 或约束参数有问题。有人可以帮我吗。
注意 - 以下是我想要实现此路由代码的内容,任何不同的方法也将不胜感激。
任何包含“listing-filter”文本的段数可变的 URL 都应该由这个路由映射处理。
非常感谢。
解决方法
您的正则表达式需要更改以匹配整个 URL。这应该有效:
@"^.+listing-filter.+$"
+
后面的 .
将匹配一个或多个任意字符,而不是像您原来那样只匹配一个字符。
另外,我去掉了捕获组 ()
和零或一个 ?
修饰符,因为它们不是必需的。