Asp Mvc сокращает URL с параметрами по умолчанию

У меня есть настройка маршрута, как это:

context.MapRoute(
    "Default",
    "Dashboard/{controller}/{departmentType}/{action}/{year}/{month}",
    new
    {
        controller = "Kpi",
        departmentType = DepartmentType.Ops,
        action = "Details",
        year = DateTime.Today.Year,
        month = DateTime.Today.Month
    });

Во взглядах, когда я использую Url.Action, Mvc генерирует следующие маршруты:

  • departmentType.Ops: <a href="/dashboard" class="active">OPS</a>
  • departmentType.Bps: <a href="/dashboard/kpi/bps" class="active">BPS</a>

Mvc использует маршрут по умолчанию для моего отдела OPS, не заполняя {controller} а также {departmentType} параметры определены в моих маршрутах. Это делает JavaScript из плагина не в состоянии сделать правильный a -тег активный.

Есть ли способ настроить Mvc, чтобы всегда заполнять все параметры при генерации маршрута?

Изменить: По запросу Url.Action -методы

<a href='@Url.Action("details", "kpi", RouteValues(DepartmentType.Ops))'>OPS</a>
<a href='@Url.Action("details", "kpi", RouteValues(DepartmentType.BPS))'>BPS</a>

@functions
{
    object RouteValues(DepartmentType dt)
    {
        return new
        {
            DepartmentType = dt,
            year = ViewContext.RouteData.Values["year"],
            month = ViewContext.RouteData.Values["month"]
        };
    }

}

0 ответов

Другие вопросы по тегам