我目前正在使用相同方法的不同路由构建一个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
),它可以正常运行,但是否则无法正确生成。
如果我不在自己的模板中编写路线,我该怎么办?
答案 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>