首页 > 解决方案 > 在 Blazor 项目中的 Razor 页面之间共享代码

问题描述

我的 Razor 页面中有一个方法,需要在我的所有 Razor 页面中使用。

async Task ShowNotification(NotificationMessage message)
{
    notificationService.Notify(message);

    await InvokeAsync(() => { StateHasChanged(); });
}

能够在剃刀页面之间共享此方法并且不必将此方法放在每个页面中的最佳实践是什么?

标签: razorblazor

解决方案


您可以让您的页面继承一个基类,并将此方法放入该基类中。

通知页面.cs

public abstract class NotifyingPage : ComponentBase
{
    async Task ShowNotification(NotificationMessage message)
    {
        notificationService.Notify(message);

        await InvokeAsync(() => { StateHasChanged(); });
    }
}

SomeRazorPage.razor

@page "/something"
@inherits NotifyingPage

<div>Whatever</div>
@code {
    protected override async Task OnInitializedAsync()
    {
        await ShowNotification("Initialized!");
    }
}

推荐阅读