как добавить параметры по умолчанию для атрибутов маршрутов в asp.net mvc - PullRequest
0 голосов

Я пытаюсь изменить этот маршрут на основе соглашения:

routes.MapRoute(
    "MovieByReleaseDate",
    "movies/released/{year}/{month}",
    new { controller = "Movies", action = "ByReleasedDate" },
);

для атрибута route:

[Route("movies/released/{year}/{month}")]

, но я не вижу, как определить параметры по умолчанию, как вПервый путь.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете определить константы маршрута в атрибутной маршрутизации, чтобы разрешить только некоторое значение

[Route("movies/released/{year:regex(2015|2016)}/{month:regex(\\d{2}):range(1,12)}")]
    public ActionResult ByReleasedDate(int year, int month)
    {
        return Content($"year {year} and month {month}");
    }

при использовании {year:regex(2015|2016)} допускается только 2015 или 2016 год в параметре

с помощью {month:regex(\\d{2}):range(1,12)} допускается только 2 цифры для месяца и диапазон от 1 до 12

Надеюсь, это поможет

0 голосов
/ 15 мая 2018

Для достижения цели можно использовать несколько атрибутов [Маршрут] в сочетании с обнуляемыми параметрами.

[HttpGet]
[Route("movies/released/")]
[Route("movies/released/{year}")]
[Route("movies/released/{year}/{month}")]
public string Test(int? year = 2018, int? month = 1)
{
    return "The year is " + year;
}

Когда вы отправляете запрос на фильмы / выпущенные без года, для года используется значение по умолчанию.,Когда вы отправляете запрос в movies / release / 2000, параметр URL переопределяет значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...