如何从 Blazor 组件 (.razor) 导航到 .cshtml 页面?

时间:2021-03-09 23:35:53

标签: blazor blazor-server-side

在服务器端 Blazor 中,如何从 Blazor 组件(.razor)重定向到 .cshtml 登录页面?

Login.cshtml(位于 ProjectRoot/Identity/Login 文件夹中)

    @page "/login"
            
    <p> I am login page </p>

Index.razor


    @page "/"
    @inject NavigationManager NavigationManager
    
    <AuthorizeView>
        <NotAuthorized>
            @if (true)
            {
                NavigationManager.NavigateTo("/login");
            }
        </NotAuthorized>
    </AuthorizeView>

目前,使用上面的代码,我得到一个异常:Microsoft.AspNetCore.Components.NavigationException。 引用 .cshtml 页面的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以创建一个自定义组件,在初始化时触发 javascript 重定向。像这样

A[U_Size]=A[i]

然后在您的页面中:

[Parameter]
public string Path { get; set; }
[Inject] private IJSRuntime JSRuntime { get; set; }
protected override async Task OnInitializedAsync()
{
  await JSRuntime.InvokeVoidAsync("BlazorHelpers.RedirectTo", Path);
}

你的 Js 应该是这样的:

<AuthorizeView>
    <NotAuthorized>
        <RedirectTo Path="Something"></RedirectTo>
    </NotAuthorized>
</AuthorizeView>