ASP.NET Core 路由多个可选参数

问题描述 投票:0回答:1

在 MVC 4 中我有这个自定义路线:

url+ "test/{id1}/{id2}/{id3}/{id4}/{id5}/{id6}/{id7}/{id8}/{id9}/{id10}/{id11}/{id12}",
                                                  new
                                                  {
                                                      controller = nameof(Test),
                                                      action = "Index",
                                                      id1 = UrlParameter.Optional,
                                                      id2 = UrlParameter.Optional,
                                                      id3 = UrlParameter.Optional,
                                                      id4 = UrlParameter.Optional,
                                                      id5 = UrlParameter.Optional,
                                                      id6 = UrlParameter.Optional,
                                                      id7 = UrlParameter.Optional,
                                                      id8 = UrlParameter.Optional,
                                                      id9 = UrlParameter.Optional,
                                                      id10 = UrlParameter.Optional,
                                                      id11 = UrlParameter.Optional,
                                                      id12 = UrlParameter.Optional
                                                  }

这是 TestController 中的一个方法。 但是,我似乎无法在 Core 中使用它。

如果我有

"Test Controller", "/test/{action}/{id1?}/{id2?}/{id3?}/{id4?}/{id5?}/{id6?}/", new { Controller = "Test", Action = "Index" }

在控制器中:

[HttpGet]    
public IActionResult Index(string id1, string id2, string id3, string id4, string id5, string id6)
    {
        return Ok("hello world");
    }

只有当我指定 ids 作为查询参数时它才有效。我需要网址中的斜杠。

路由属性有效,但 URL 是动态的,我认为这不能很好地协同工作。

我需要如何在此处构建路线才能使其正常工作?

c# asp.net asp.net-core
1个回答
1
投票

最好使用属性路由

[HttpGet("~/test/index/{id1?}/{id2?}/{id3?}/{id4?}/{id5?}/{id6?}")]
public IActionResult Index(string id1, string id2, string id3, string id4, string id5, string id6)
    {
        return Ok("hello world");
    }
© www.soinside.com 2019 - 2024. All rights reserved.