У меня есть страница, которая ожидает некоторые значения маршрута, такие как:
@page "{reportYear:int:range(2000, 2100)?}/{reportMonth:int:range(1, 12)?}"
Модель выглядит следующим образом:
public async Task<IActionResult> OnGetAsync([FromRoute]int? reportYear, [FromRoute]int? reportMonth)
{
if (reportYear.HasValue == reportMonth.HasValue)
{
MyViewModel.ReportYear = reportYear ?? DefaultReportYear;
MyViewModel.ReportMonth = reportMonth ?? DefaultReportMonth;
return Page();
}
return RedirectToPage(PageName);
}
Идея состоит в том, что если оба значения маршрута указаны иправильно, покажите страницу с ними.Если они оба не указаны, все равно покажите страницу, но со значениями по умолчанию.
И если указан только один из них, перенаправьте на ту же страницу, но без каких-либо значений маршрута, чтобы показать версию по умолчанию ииспользуйте чистый адрес.
Проблема в том, что RedirectToPage перенаправляет с сохранением значений маршрута.Другими словами, если я посещаю "/ pageName / 2018", я получаю перенаправление на то же самое "/ pageName / 2018". Предоставленное значение маршрута (2018) не удаляется из перенаправления.
Как мнеочистить значения и перенаправить только на страницу?
PS Url.Page (PageName) также возвращает «/ pageName / 2018» в этом случае.Значения маршрутов не удаляются.
PPS Я просто хочу, чтобы пользовательский опыт стал немного лучше.Если пользователь ввел неправильный адрес страницы (например, «/ pageName / 2018»), я хочу удалить эту неправильную часть (2018) из адреса и показать страницу по умолчанию, например, «/pageName".
PPPS Я знаю, что могу поиграться с JS, который работает с адресной строкой, но такой подход мне не нравится.