Перенаправление в блазоре с параметром - PullRequest
0 голосов
/ 22 января 2019

Здравствуйте, как вы можете перенаправить на другую страницу в Blazor с параметром?

@page "/auth"
@using Microsoft.AspNetCore.Blazor.Services;
@inject AuthService auth
@inject IUriHelper urihelper;

<input type="text" bind="@Username" />
<button onclick="@AuthAsync">Authenticate</button>



@functions{

    public string Username { get; set; }
    public string url = "/home";

    public async Task AuthAsync()
    {
        var ticket=await this.auth.AuthenticateAsync(Username);
        urihelper.NavigateTo(url); //i see no overload that accepts parameters
    }
}

В этом случае я хочу перейти на страницу /home, указав в качестве параметра строку.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Сделайте это:

  • Создайте страницу файла home.cshtml следующим образом: Обратите внимание, что используются две директивы @page, так как дополнительные параметры еще не поддерживаются. Первый разрешает навигацию к компоненту без параметра. Вторая директива @page принимает параметр маршрута {username} и присваивает значение свойству Username.

Страницы / home.cshtml

@page "/home"
@page "/home/{username}"

<h1>@Username is authenticated!</h1>

@functions {
    // Define a property to contain the parameter passed from the auth page
    [Parameter]
    private string Username { get; set; };
}
  • Сделайте это в своем auth.cshtml

    @ функции {

    public string Username { get; set; }
    public string url = "/home";
    
    public async Task AuthAsync()
    {
        var ticket=await this.auth.AuthenticateAsync(Username);
        // Attach the parameter to the url
        urihelper.NavigateTo(url + "/" + Username); 
    }
    

    }

Надеюсь, это поможет ...

0 голосов
/ 22 января 2019

В настоящее время вы можете передавать только параметры в URL.

Итак, если ваш домашний компонент ожидал [Parameter] string Name, вам нужно будет указать URL-адрес /home/fred, и fred будет передано в параметр Name домашнего компонента.

Если вы хотите передавать более сложные данные, вам нужно будет сделать это с помощью какого-либо сервиса.

Вот ссылка на официальные документы по параметрам маршрутизации: https://blazor.net/docs/routing.html#route-parameters

...