具有相同操作的不同参数的多个路由

时间:2017-05-21 20:55:41

标签: c# asp.net-mvc razor

我目前正在使用相同方法的不同路由构建一个ASP.NET项目。我目前的代码是:

 [Route("evenements/categories/{slug}-{id}")]
 [Route("evenements/ville/{name}")]
 [Route("evenements/listing")]
 public async Task<ActionResult> Listing(string slug = null, int id = 0, string name = null)

我正在使用ControllerContext.RouteData.Route来检测我匹配的路线,目前,它的工作非常好。不幸的是,当我使用@Url.Action来构建我的网址时,它无法正常工作,我最终会使用evenements/listing?name=evenements/listing?slug=&id=

如果我自己输入网址(例如https://localhost:44396/evenements/categories/musique-1016),它可以正常运行,但是否则无法正确生成。

如果我不在自己的模板中编写路线,我该怎么办?

1 个答案:

答案 0 :(得分:1)

生成网址时,您可以在视图中使用命名路由与Url.RouteUrl帮助器结合使用:

[Route("evenements/categories/{slug}-{id}", Name = "EvenementsByCategories")]
[Route("evenements/ville/{name}", Name = "EvenementsByVille")]
[Route("evenements/listing", Name = "EvenementsListing")]
public async Task<ActionResult> Listing(string slug = null, int id = 0, string name = null)

查看:

<a href="@Url.RouteUrl("EvenementsByCategories", new { slug = "mySlug", id = 1 })">My Link</a>