#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 также имеет асинхронную версию.