Edit
Я думал, что это wasm, но вы все равно можете попробовать его для серверной части Blazor.
Есть множество способов сделать это. Я покажу, как я реализовал тосты в blazor.
Я создал ToastContainer как компонент. Он может содержать html для тоста или, если вы используете библиотеку пользовательского интерфейса, такую как Kendo или Syncfusion, он будет содержать их компонент тоста. Я буду использовать Syncfusion. Затем я добавил этот компонент в App.razor, потому что хотел использовать его на каждой странице.
Затем я создал интерфейс IToastService и ToastService с его реализацией. Класс ToastService содержит ссылку на объект тоста, который инициализируется в ToastContainer.
IToastService.cs
public interface IToastService
{
SfToast SfToast{ get; set; }
void ShowMessage(string title, string content = null);
}
ToastService.cs
public class ToastService : IToastService
{
public SfToast SfToast { get; set; }
public void ShowError(string title, string content = null)
{
SfToast.Show(new ToastModel
{
Title = title,
Content = content
});
}
}
ToastContainer.razor
@using Syncfusion.Blazor.Notifications
<SfToast @ref="@_sfToast" TimeOut="5000" >
<ToastPosition X="Right"></ToastPosition>
<ToastAnimationSettings>
<ToastAnimationSettingsShow Effect="@ShowEffect" Easing="@ShowEasing" Duration="@ShowDuration"></ToastAnimationSettingsShow>
<ToastAnimationSettingsHide Effect="@HideEffect" Easing="@HideEasing" Duration="@HideDuration"></ToastAnimationSettingsHide>
</ToastAnimationSettings>
</SfToast>
@code {
[Inject] private Client.Services.Contracts.IToastService ToastService { get; set; }
private SfToast _sfToast;
public string ShowEasing { get; set; } = "ease";
public string HideEasing { get; set; } = "ease";
public string ShowEffect { get; set; } = "SlideRightIn";
public string HideEffect { get; set; } = "SlideRightOut";
public double ShowDuration = 400;
public double HideDuration = 400;
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
ToastService.SfToast = _sfToast;
}
}
}
Наконец, я зарегистрировал эту службу как singleton в Program.cs, используя DI.
Program.cs
builder.Services.AddSingleton<IToastService, ToastService>();
Использование в WhatEverPage. бритва
@inject IToastService toastService
@code {
protected override async Task OnInitialized() {
toastService.ShowMessage("title", "content");
}
}