添加静态段以路由以使分页更友好的asp.net核心

时间:2017-08-07 22:14:00

标签: c# asp.net-mvc asp.net-core asp.net-core-mvc

在我的网站上,我通过使用slug使我的网址更加友好。我想通过更改

来使与分页相关的网址信息更加友好
 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'之前是无效的细分'页面 - '

2 个答案:

答案 0 :(得分:1)

我在配置方法

中的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)

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

答案 1 :(得分:0)

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

//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
}