将静态段添加到路由中,使分页 asp.net 核心更友好



在我的网站上,我通过使用 slug 使我的网址总体上更加友好。我也想通过更改使与分页相关的 url 信息更加友好

www.example.com/controller/action/1  // 1 represents the page

www.example.com/controller/action/page-1 

我不在乎这是否不可能,但这是可取的。

我试图用

[Route("action/page-{pagina?}")]
public IActionResult Action(int page= 1)

导航时获取此内容。

可选参数"page">

前面有一个无效的段"page-">

我已经在配置方法的Startup.cs中成功地完成了此操作

app.UseMvc(routes => {
/* code removed for brevity */
routes.MapRoute(
name: "RouteName",
template: "action/page-{pageNumber}",
defaults: new { Controller = "YourController", Action = "Action" }
);
});

然后,您的控制器将是...

public IActionResult Action(int page= 1)

这取决于是否需要使用属性路由。

您可以考虑使用带有约束的可选参数,然后分析该参数以获取页码

//Matches action
//Matches action/page-1
[Route("action/{page:regex(^page-d$)?}")]
public IActionResult Action(string page = "page-1") {
//... parse page
// page number = page.Replace("page-", "");
// then int.Parse() page number
}

最新更新