【问题标题】:asp.net mvc routing with multiple optional parameters did not work具有多个可选参数的 asp.net mvc 路由不起作用
【发布时间】:2016-10-01 15:10:17
【问题描述】:

我写了一个属性路由Route("Home/{category?}/{Subcategory?}/List")想匹配下面的例子 /Home/C1/S1/List/Home/C1/List/Home/List

但是只匹配第一个url,可选参数不起作用。 如何使用匹配以上三个例子的路由规则?

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [Route("Home/{category?}/{subcategory?}/List")]
    public IActionResult List(Category? category = null, SubCategory? subcategory = null)
    {
        return Content(category.ToString() + "/" + subcategory.ToString());
    }

    [Route("Home/{code}/Detail")]
    public IActionResult Detail(string code)
    {
        return Content(code);
    }
}


public enum Category
{
    C1,
    C2,
    C3,
    C4
}

public enum SubCategory
{
    S1,
    S2,
    S3,
    S4
}

类似问题

Routing optional parameters in ASP.NET MVC 5

MVC routing with one fixed action and controllers with multiple optional parameters

【问题讨论】:

  • 可选参数应该在最后。您不能像在 List 操作中那样在非可选参数之间插入可选参数。

标签: c# asp.net asp.net-mvc asp.net-core asp.net-mvc-routing


【解决方案1】:

如果一个路由不起作用,可以使用三个路由规则来完成。

[Route("Home/List")]
[Route("Home/{category}/List")]
[Route("Home/{category}/{subcategory}/List")]

谢谢。

【讨论】:

    【解决方案2】:

    每个路由只能有一个可选参数,并且该可选参数必须是最后一个参数。

    https://exceptionnotfound.net/asp-net-core-demystified-routing-in-mvc/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      相关资源
      最近更新 更多