Прежде всего, создайте свой компонент Check с параметром маршрута в дополнение к обычному шаблону маршрута. Первый разрешает навигацию к компоненту без параметра. Вторая директива @page принимает параметр маршрута {returnurl} и присваивает значение свойству ReturnUrl, определенному ниже.
Затем добавьте директиву @inject для внедрения NavigationManager в ваш компонент, чтобы можно было вызвать его метод NavigateTo, который позволяет перейти к маршруту, переданному в параметре {returnurl}
Проверка .razor
@page "/check"
@page "/check/{returnurl}"
@inject NavigationManager NavigationManager
<button @onclick="GoBack">Go back</button>
@code {
[Parameter]
public string ReturnUrl { get; set; }
private void GoBack()
{
NavigationManager.NavigateTo(ReturnUrl, forceLoad: false);
}
}
Теперь вы можете вызывать свой компонент Check из других компонентов. Добавьте директиву @inject, чтобы добавить NavigationManager в ваш компонент. Сначала мы хотим извлечь текущее местоположение; вот где мы находимся: первая строка в методе CallCheck делает это. Обратите внимание, что если вы находитесь в компоненте Counter и нажимаете кнопку «Проверка вызова», переменная returnUrl будет содержать значение «Counter», а если вы находитесь в компоненте Index (конечно, вам нужно добавить тот же код, что и здесь) переменная returnUrl будет содержать пустую строку.
После извлечения текущего местоположения мы вызываем метод NavigateTo для перехода к маршруту, содержащемуся в переменной returnUrl.
Использование
@inject NavigationManager NavigationManager
<button class="btn btn-primary" @onclick="CallCheck">Call Check</button>
@code
{
private void CallCheck()
{
var returnUrl =
NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
NavigationManager.NavigateTo($"check/{returnUrl}", forceLoad: false);
}
}