代码之家  ›  专栏  ›  技术社区  ›  blgrnboy

ASP.NET核心路由第一部分与通配符结尾匹配

  •  3
  • blgrnboy  · 技术社区  · 6 年前

    我想定义一条只需要匹配前几个分段,而忽略其余分段的路线:

    [Route("public/portfolio/{publicPortfolioId}")]
    

    我的想法是 开始 具有 public/portfolio/myid 会匹配的。这将导致匹配:

    public/portfolio/myid
    public/portfolio/myid/something
    public/portfolio/myid/something/that/doesnt/exist
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Shaun Luttin    6 年前

    使用 抓住一切 参数。

    [Route("public/portfolio/{publicPortfolioId}/{*remainder}")]
    

    有两种方法可以使用它。

    忽略其余部分:

    [Route("public/portfolio/{publicPortfolioId}/{*remainder}")]
    public IActionResult DemoAction(int publicPortfolioId) 
    {
        return Json(new 
        { 
            publicPortfolioId 
        });
    }
    

    捕获剩余部分:

    [Route("public/portfolio/{publicPortfolioId}/{*remainder}")]
    public IActionResult DemoAction(int publicPortfolioId, string remainder)
    {
        return Json(new
        {
            publicPortfolioId,
            remainder
        });
    }
    

    另见: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-2.1