Renderização de notificação do sistema no lado do servidor.
Notificação do brinde em chamadas AJAX. XMLHTTPRequests - Suporte total. buscar API - Suporte parcial (ver exemplo).
Suporta estrutura de projeto de pasta de recursos.
Suporta várias bibliotecas de clientes: brinder.js e noty.js. Pode ser facilmente estendido para suportar mais.
Nota | Fonte
Torradeira | Fonte
Gerenciador de pacotes do Visual Studio Nuget - Install-Package NToastNotify
dotnet CLI - dotnet add package NToastNotify
IMVCBuilder
ou IMVCCoreBuilder
using NToastNotify.Libraries;services.AddMvc().AddNToastNotifyToastr(new ToastrOptions(){ProgressBar = false,PositionClass = ToastPositions.BottomCenter});//Ou simplesmente vá services.AddMvc().AddNToastNotifyToastr();
usando NToastNotify.Libraries;services.AddMvc().AddFeatureFolders().AddNToastNotifyNoty(new NotyOptions {ProgressBar = true,Timeout = 5000,Theme = "mint"});//Ou simplesmente goservices.AddMvc().AddNToastNotifyNoty();
Nota: Certifique-se de ter as instruções using necessárias.
O parâmetro ToastrOption atua como opções globais para a biblioteca do brinde. Se nenhuma opção for fornecida, as configurações globais serão as opções padrão do brinde.
Configuração pública void (aplicativo IApplicationBuilder, ambiente IHostingEnvironment) {//NOTA esta linha deve estar acima de .UseMvc() line.app.UseNToastNotify();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action =Índice}/{id?}");}); }
@await Component.InvokeAsync("NToastNotify")
A linha acima torna a View necessária para o componente de visualização. Embora você possa colocar esta linha em qualquer lugar dentro da tag head
ou body
, é recomendado que você coloque esta linha no final, antes da tag body
de fechamento.
public class HomeController: Controller{private readonly IToastNotification _toastNotification;public HomeController(IToastNotification toastNotification){_toastNotification = brindeNotification;}public IActionResult Index(){//Testando métodos padrão//Success_toastNotification.AddSuccessToastMessage("O mesmo para mensagem de sucesso");// Sucesso com as opções padrão (levando em consideração os padrões substituídos ao inicializar em Startup.cs)_toastNotification.AddSuccessToastMessage();//Info_toastNotification.AddInfoToastMessage();//Warning_toastNotification.AddWarningToastMessage();//Error_toastNotification.AddErrorToastMessage();return View();}public IActionResult About(){_toastNotification.AddInfoToastMessage("Você foi redirecionado");return View();}public IActionResult Contact(){_toastNotification.AddAlertToastMessage("Você será redirecionado");return RedirectToAction("Sobre");}public IActionResult Error(){_toastNotification.AddErrorToastMessage("Houve algo errado com esta solicitação.");return View();}public IActionResult Empty(){return View();}public IActionResult Ajax(){_toastNotification.AddInfoToastMessage("Esta página fará solicitações ajax e mostrará notificações.");return View ();}public IActionResult AjaxCall(){System.Threading.Thread.Sleep(2000);_toastNotification.AddSuccessToastMessage("Este brinde é mostrado na solicitação Ajax. AJAX CALL " + DateTime.Now.ToLongTimeString());return PartialView("_PartialView", "Chamada Ajax");}public IActionResult NormalAjaxCall(){return PartialView("_PartialView", "Chamada Ajax normal");}public IActionResult ErrorAjaxCall(){lançar nova exceção("Ocorreu um erro");}}
classe pública HomeController: Controlador{privado somente leitura IToastNotification _toastNotification;public HomeController(IToastNotification toastNotification){_toastNotification = brindeNotification;}public IActionResult Index(){_toastNotification.AddSuccessToastMessage();_toastNotification.AddErrorToastMessage("Erro de teste", new NotyOptions(){Timeout = 0});return View();}public IActionResult About(){ViewData["Message"] = "Página de descrição da sua aplicação.";_toastNotification.AddAlertToastMessage("Minha mensagem de aviso sobre");return View();}public IActionResult Contact(){ViewData["Message"] = "Sua página de contato.";_toastNotification.AddInfoToastMessage("Não se confunda. <br /> <strong>Você foi redirecionado da página de contato. <strong/>");return RedirectToAction("Sobre");}public IActionResult Error(){_toastNotification.AddErrorToastMessage("Houve algo errado com esta solicitação." );return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });}public IActionResult Ajax(){_toastNotification.AddInfoToastMessage("Esta página fará solicitações ajax e mostrará notificações.");return View();}public IActionResult AjaxCall(){System.Threading.Thread.Sleep(2000);_toastNotification.AddSuccessToastMessage( "Este brinde é mostrado a pedido do Ajax. AJAX CALL " + DateTime.Now.ToLongTimeString());return PartialView("_PartialView", "Chamada Ajax");}public IActionResult NormalAjaxCall(){return PartialView("_PartialView", "Chamada Ajax normal");}public IActionResult ErrorAjaxCall(){lançar nova exceção("Ocorreu um erro");}}
Brinde não mostrado após POST-REDIRECT
CORREÇÃO Se você estiver usando CookieTempDataProvider (este é o padrão), você precisa aceitar o prompt da política de cookies.
npm install
npm build
dotnet restore
dotnet build
Execute qualquer projeto de exemplo usando dotnet run
no diretório do projeto de exemplo