在路由中使用无限参数(如parms数组)

时间:2017-04-30 12:22:58

标签: asp.net-mvc asp.net-core-mvc

在ASP.Net MVC中,是否可以为路由定义可能存在未知数量的参数?例如,假设以下代码:

public void Sample(params String[] args) {}

我们可以在[Route("Product/{id}")]之类的路线中模仿相同的概念,以便我们得到以下结果:

 /Product/PID_01/PID_02/PID_03,....

1 个答案:

答案 0 :(得分:2)

是的,可以使用catch-all路线:

[Route("foo/{group}/{*id}")]
public IActionResult Foo(string group, string id)
{
    var ids = id.Split('/');
    // Do your stuff
}

然后转到:

  

http://yourapp/foo/Product/PID_01/PID_02/PID_03

您还可以定义自定义ModelBinder以避免在控制器代码中拆分。