razor - 在 Blazor 项目中的 Razor 页面之间共享代码
问题描述
我的 Razor 页面中有一个方法,需要在我的所有 Razor 页面中使用。
async Task ShowNotification(NotificationMessage message)
{
notificationService.Notify(message);
await InvokeAsync(() => { StateHasChanged(); });
}
能够在剃刀页面之间共享此方法并且不必将此方法放在每个页面中的最佳实践是什么?
解决方案
您可以让您的页面继承一个基类,并将此方法放入该基类中。
通知页面.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!");
}
}
推荐阅读
- css - 标题元素对齐
- c# - 将内部可区分联合的实例从 F# 初始化为 C#
- bash - curl:(3) URL 使用错误/非法格式或缺少 URL 和 HTTP/1.1 403 Forbidden
- c - fgets() 存储字符串时换行,但gets() 没有换行问题
- php - MySQL,PHP。上传和更新多个文件的最佳方式
- c# - 在我的 Windows 表单计算器(c#)中添加“,”的问题
- sharepoint-online - 不需要签出,但创建的文件处于签出状态
- php - 在 PHP 的注解中指定返回值
- multithreading - 内存重新排序是否等同于指令重新排序?
- scala - Scala,ZIO - 每次重试后记录一些东西