路线开头的可选参数

时间:2017-10-26 20:35:55

标签: c# asp.net-core routing

我尝试创建满足以下两种情况的路线:

  1. EN-US / myController的/动作/ 1
  2. myController的/动作/ 1
  3. 基本上我需要的是以下规则。但似乎系统总是期望locale参数,即使它是可选的。

    [Route("{locale?}/[controller]/[action]")]
    public class MyController : Controller
    {
         [Route("{id}")]
         public IActionResult Action(int id) {
              return View();
         }
    }
    

    知道如何创建支持上述场景的规则吗?

1 个答案:

答案 0 :(得分:0)

路线中的可选参数必须在最后。没有办法解决这个问题。但是,还有另一种方法可以处理它:只需添加多个路径:

[Route("{locale}/[controller]/[action]")]
[Route("[controller]/[action]")]

现在它将以任何一种方式做出回应。 FWIW,您可能要考虑为locale param添加一些约束,因此它与所有不匹配。