Как перенаправить вызывающему абоненту в коде бритвы программно? - PullRequest
0 голосов
/ 28 января 2020

Как мне go позвонить на страницу звонящего в бритву, код страницы?

Т.е. например: страницу Check.razor можно вызвать с нескольких страниц. Я бы хотел go вернуться к вызывающей стороне в коде Check.razor в зависимости от некоторых условий.

1 Ответ

2 голосов
/ 29 января 2020

Прежде всего, создайте свой компонент 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);

    }
}
...