我读了很多关于asp.net核心中路线的博客和问题,但没有发现任何人提到类似的东西。
在某些情况下,我希望我的路线看起来像:
/products/1/reviews/1
产品和评论后面跟着他们的id或更嵌套的路线,如:
/products/1/images/1/comments/1
有没有一种方法可以像默认的一样为它定义一个模板路由:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
您可以使用基于属性的路由
[Route("[conroller]/[action]")]
public class ImagesController
{
[HttpGet("/[controller]/{productId:int}/images/{imageId:int}/comments/{commentId:int}")]
public IActionResult GetComments(int productId, int imageId, int commentId)
{
}
}
routes.MapRoute(
name: "Products",
template: "products/{productId}/{action?}/{commentId?}",
defaults: new { controller = "Products", action = "Index" });
https://docs.asp.net/en/latest/fundamentals/routing.html-ASP中的路由。NET核心
与ASP的路由格式没有区别。NET和ASP。NET核心。
你可以检查这个:ASP。NET路由
为了实现您的目标,您所要做的就是定义默认路线的路线ON TOP。