Neste artigo veremos como enviar notificações toast em aplicações ASP.NET Core MVC. |
As notificações toast são avisos emitidos em uma pequena janela pop-up que ocupa
pouco espaço que podem ou não desaparecer após alguns segundos.
Neste artigo, veremos como usar este recurso em aplicações ASP .NET Core MVC usando o pacote Nuget AspNetCoreHero.ToastNotification.
Criando e configurando o projeto MVC
Vamos criar um projeto no VS 2022 usando o template
ASP.NET Core Web App com o nome MvcToastNotification.
A seguir vamos instalar o seguinte pacote no projeto:
Install-Package AspNetCoreHero.ToastNotification
ou dotnet add package AspNetCoreHero.ToastNotification
A seguir vamos configurar a utilização do recurso incluindo no arquivo _Layout.cshtml da pasta Shared do projeto a linha de código destacada abaixo:
... <script src="~/js/site.js" asp-append-version="true"></script> @await Component.InvokeAsync("Notyf") //<- @RenderSection("Scripts", required: false) |
Podemos definir esta configuração em qualquer página onde você quiser exibir as notificações. Usar o arquivo _Layout.cshtml vai permitir que isso seja feito em todas as páginas do projeto.
Certifique-se de colocar esta linha somente depois de carregar a biblioteca jquery. Dessa forma, adicionamos o componente Toast Notification à nossa View.
A seguir precisamos registrar o serviço no container DI nativo no arquivo Program:
using
AspNetCoreHero.ToastNotification; var builder = WebApplication.CreateBuilder(args);// Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddNotyf(config => var app = builder.Build();... ... app.Run(); |
Aqui configuramos o seguinte:
DurationInSeconds – Define em quantos segundos a
notificação do sistema será fechada. Isso é aplicado a todas as notificações que
você criar neste aplicativo. Você também pode optar por substituir essa
configuração, em termos de notificação.
IsDismissable – Adiciona um pequeno botão de
fechamento à notificação do sistema, se definido como verdadeiro.
Position – Uma enumeração de onde você deseja que a
notificação do sistema apareça;
Se você estiver trabalhando com partial views e/ou JSON Result Views para garantir que suas notificações apareçam mesmo se não houver um recarregamento de página real inclua o código abaixo na classe Program:
app.UseNotyf();
Com isso estamos adicionando um Middleware ao Pipeline que, por sua vez, captura todas as suas notificações geradas por meio de chamadas AJAX. Uma vez que o Middleware busca os dados do XHR, poucas funções JS assumem a partir daí e exibem as mensagens de notificação das configurações pré-definidas.
Usando o recurso
Agora podemos usar o recurso em nosso projeto.
No controlador HomeController vamos injetar no construtor a instância
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly INotyfService _notyf;
public HomeController(ILogger<HomeController> logger, INotyfService notyf) { _logger = logger; _notyf = notyf; } ... } |
Agora podemos exibir as notificações usando a instância de INotyfService.
No método Action Index :
public IActionResult Index()
{
_notyf.Success("Success Notification");
_notyf.Error("Mensagem de erro");
_notyf.Warning("Mensagem de Alerta");
_notyf.Information("Informação - Faça o Backup - fecha em 4 segundos.", 4);
return View();
}
|
As três primeiras notificações vão encerrar em 10 segundos e a notificação de informação fecha em 4 segundos:
Vejamos agora o uso de notificações personalizadas no método Action Privacy :
public IActionResult Privacy()
{
_notyf.Custom("Aviso customizado - fecha em 5 segundos.", 5, "whitesmoke", "fa fa-gear");
_notyf.Custom("Verifique as configurações do seu Perfil - Encerra em 6 segundos.", 6, "#0c343d", "fa fa-user");
return View();
}
|
Aqui estamos usando notificações customizadas onde podemos usar ícones da fonte FontAwesome bastando informar o nome da classe.
Se você optar por usar sua própria biblioteca de ícones, apenas adicione uma referência da biblioteca ao _Layout.cshtml como faria normalmente, e simplesmente passe o nome da classe para o serviço toast. Você também pode definir a cor de fundo da notificação do sistema. Ele suporta o código hexadecimal e o nome da cor também.
Este projeto é de código fonte aberto que você pode conferir neste link: https://github.com/aspnetcorehero/ToastNotification
Pegue o projeto aqui : MvcToastNotification.zip (sem as referências) ...
"Não será assim entre vós; mas todo aquele que quiser entre vós fazer-se grande
seja vosso serviçal;
E, qualquer que entre vós quiser ser o primeiro, seja
vosso servo;"
Mateus
20:26,27
Referências: