创建与ASP.NET核心中以特定模式开头的所有URL匹配的路由模板

创建与ASP.NET核心中以特定模式开头的所有URL匹配的路由模板,asp.net,asp.net-core,asp.net-core-mvc,asp.net-core-5.0,asp.net5,Asp.net,Asp.net Core,Asp.net Core Mvc,Asp.net Core 5.0,Asp.net5,我有一个应用程序,它是在ASP.NET Core 5/.NET 5 Framework之上编写的。我需要创建一个路由模板,该模板将引导任何以/homes for sale in-{city}-{id:int}开头的URL来定义控制器/操作 下面是一些URL示例 /homes-for-sale-in-los-angeles-100/condo,apartment_type /homes-for-sale-in-los-angeles-100/0-5000_price/10_page /homes-

我有一个应用程序,它是在ASP.NET Core 5/.NET 5 Framework之上编写的。我需要创建一个路由模板,该模板将引导任何以
/homes for sale in-{city}-{id:int}
开头的URL来定义控制器/操作

下面是一些URL示例

/homes-for-sale-in-los-angeles-100/condo,apartment_type
/homes-for-sale-in-los-angeles-100/0-5000_price/10_page
/homes-for-sale-in-los-angeles-100/condo_type/0-5000_price/2_page
.... yes there are many more
我尝试了以下模式

[Route("/homes-for-sale-in-{city}-{id:int}{*.}", Name = "HomesForSaleByCity")]
public async Task<IActionResult> Display(string city, id? id)
{
    return View();
}
[Route(“/HomesForSaleByCity中出售的房屋-{city}-{id:int}{*}”,Name=“HomesForSaleByCity”)]
公共异步任务显示(字符串城市,id?id)
{
返回视图();
}
但我得到了这个错误:

RoutePatternexException:包含多个节(如文字节或参数)的路径段不能包含“全部捕获”参数


我如何添加一个模式来重定向任何以模式开头的url?

我相信您需要使用regex进行路由,并且可以引用一次。

这就成功了

[Route("/homes-for-sale-in-{city}-{id:int}/{**filters}", Name = "HomesForSaleByCity")]
public async Task<IActionResult> Display(string city, id? id, string filters = "")
{
    return View();
}
[Route(“/HomesForSaleByCity中出售的房屋-{city}-{id:int}/{**filters}”,Name=“HomesForSaleByCity”)]
公共异步任务显示(字符串城市,id?id,字符串过滤器=“”)
{
返回视图();
}

我在这里遇到的问题是,路由约束应用于URL部分,而不是整个路径。这意味着使用
/
将url(例如
/homes-for-sale-los-anegles-100/0-100_price/0-3_beds)分解为多个部分,然后应用路由约束。我需要找到一种方法连接到路由引擎中,以便在将请求的路径拆分为多个部分之前应用一些约束/regex。