首页 > 解决方案 > 使用参数在 blazor 中重定向

问题描述

您好,您如何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给它一个字符串作为参数的页面。

标签: c#routingblazor

解决方案


做这个:

  • 像这样创建一个 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 中执行此操作
    @functions{

        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); 
        }
    }

希望这可以帮助...


推荐阅读