Есть ли способ проверить, имеет ли URL-адрес ограничение маршрута в Blazor?

#c# #.net-core #blazor #blazor-webassembly

Вопрос:

У меня есть страница с ограничением маршрута @page "/users/{userId:int}"

У меня есть еще одна страница @page "/users/"

Я хочу знать, на какой URL-адрес перенаправляется, а затем выполнить действие, основанное на этом.

Я думаю, что если бы я нашел способ проверить, имеет ли URL-адрес ограничение на маршрут (и даже получить ограничение и его тип), моя проблема была бы решена.

Подробная информация

Я проверяю это на странице навигационного меню, чтобы знать, какой пункт меню следует установить в качестве активного

Комментарии:

1. Где вы пытаетесь провести этот тест? Почему?

2. У меня есть страница навигационного меню, где мне нужно проверить это, чтобы я мог знать, какой пункт меню сохранить

3. Разве это не должно быть просто каким-то if (userId.HasValue){ <a asp-route-userId="@userId" .... } else { ... }

4. Маршрутизатор (обычно в компоненте приложения) содержит данные маршрутизации, которые вы можете каскадировать и использовать. Эти данные маршрутизации обладают свойствами, которые могут быть полезны. Я не уверен, что вы подразумеваете под «какой пункт меню сохранить», поэтому не уверен, что это будет полезно

5. Чисто с точки зрения пользовательского интерфейса? Т. е. чтобы показать меню пользователя активным?

Ответ №1:

в этом сценарии, если вы вызовете страницу пользователей, то @страница «/пользователи/» эта страница будет вызвана, если вы вызовете пользователей с параметром, отличным от @страница «пользователи/{идентификатор пользователя:int}», вызовет ее в зависимости от того, что вы вызываете

Комментарии:

1. Я хочу программно проверить это после звонка.

Ответ №2:

Вы можете проверить это в событии жизненного цикла, подобном этому:

 [Parameter]
public int? userId { get; set; }

protected override void OnParametersSet()
{
  if (userId is not null)
  {
    // Perform action when user id is present
  }
}
 

Обратите внимание, что OnParametersSet также имеет асинхронную версию.