Rendu des notifications toast côté serveur.
Notification Toast sur les appels AJAX. XMLHTTPRequests - Prise en charge complète. fetch API - Prise en charge partielle (voir exemple).
Prend en charge la structure du projet du dossier de fonctionnalités.
Prend en charge plusieurs bibliothèques clientes : toastr.js et noty.js. Peut facilement être étendu pour prendre en charge davantage.
Noté | Source
Grille-pain | Source
Gestionnaire de packages Visual Studio Nuget - Install-Package NToastNotify
dotnet CLI - dotnet add package NToastNotify
IMVCBuilder
ou IMVCCoreBuilder
en utilisant NToastNotify.Libraries;services.AddMvc().AddNToastNotifyToastr(new ToastrOptions(){ProgressBar = false,PositionClass = ToastPositions.BottomCenter});//Ou allez simplement à services.AddMvc().AddNToastNotifyToastr();
en utilisant NToastNotify.Libraries;services.AddMvc().AddFeatureFolders().AddNToastNotifyNoty(new NotyOptions {ProgressBar = true,Timeout = 5000,Theme = "mint"});//Ou simplement goservices.AddMvc().AddNToastNotifyNoty();
Remarque : assurez-vous de disposer des instructions using nécessaires.
Le paramètre ToastrOption fait office d'options globales pour la bibliothèque toast. Si aucune option n'est fournie, les paramètres globaux seront les options toastr par défaut.
public void Configure (application IApplicationBuilder, environnement IHostingEnvironment) {//REMARQUE, cette ligne doit être au-dessus de .UseMvc() line.app.UseNToastNotify();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action =Index}/{id?}");}); }
@await Component.InvokeAsync("NToastNotify")
La ligne ci-dessus rend la vue nécessaire pour le composant de vue. Bien que vous puissiez placer cette ligne n'importe où à l'intérieur de votre balise head
ou body
, il est recommandé de placer cette ligne à la fin avant la balise body
de fermeture.
public class HomeController : Controller{private readonly IToastNotification _toastNotification;public HomeController(IToastNotification toastNotification){_toastNotification = toastNotification;}public IActionResult Index(){//Test des méthodes par défaut//Success_toastNotification.AddSuccessToastMessage("Idem pour le message de réussite");// Succès avec les options par défaut (prise en compte des valeurs par défaut écrasées lors de l'initialisation dans Startup.cs)_toastNotification.AddSuccessToastMessage();//Info_toastNotification.AddInfoToastMessage();//Warning_toastNotification.AddWarningToastMessage();//Error_toastNotification.AddErrorToastMessage();return View();}public IActionResult About(){_toastNotification.AddInfoToastMessage( "Tu as redirigé");return View();}public IActionResult Contact(){_toastNotification.AddAlertToastMessage("Vous serez redirigé");return RedirectToAction("À propos");}public IActionResult Error(){_toastNotification.AddErrorToastMessage("Il y avait quelque chose ne va pas avec cette requête.");return View();}public IActionResult Empty(){return View();}public IActionResult Ajax(){_toastNotification.AddInfoToastMessage("Cette page effectuera des requêtes ajax et affichera des notifications.");return View();}public IActionResult AjaxCall(){System.Threading.Thread.Sleep(2000);_toastNotification.AddSuccessToastMessage(" Ce toast est affiché sur demande Ajax. APPEL AJAX " + DateTime.Now.ToLongTimeString());return PartialView("_PartialView", "Appel Ajax");}public IActionResult NormalAjaxCall(){return PartialView("_PartialView", "Appel Ajax normal");}public IActionResult ErrorAjaxCall(){throw new Exception("Une erreur s'est produite");}}
public class HomeController : Contrôleur{private readonly IToastNotification _toastNotification;public HomeController(IToastNotification toastNotification){_toastNotification = toastNotification;}public IActionResult Index(){_toastNotification.AddSuccessToastMessage();_toastNotification.AddErrorToastMessage("Test Erro", new NotyOptions(){Timeout = 0});retour View();}public IActionResult About(){ViewData["Message"] = "Page de description de votre application.";_toastNotification.AddAlertToastMessage("Mon message d'avertissement À propos");return View();}public IActionResult Contact(){ ViewData["Message"] = "Votre page de contact.";_toastNotification.AddInfoToastMessage("Ne vous y trompez pas. <br /> <strong>Vous avez été redirigé depuis Contact Page. <strong/>");return RedirectToAction("About");}public IActionResult Error(){_toastNotification.AddErrorToastMessage("Il y avait un problème avec cette demande.");return View(new ErrorViewModel { RequestId = Activity. Actuel?.Id ?? HttpContext.TraceIdentifier });}public IActionResult Ajax(){_toastNotification.AddInfoToastMessage("Cette page effectuera des requêtes ajax et affichera des notifications.");return View();}public IActionResult AjaxCall(){System.Threading.Thread.Sleep(2000);_toastNotification.AddSuccessToastMessage(" Ce toast est affiché sur demande Ajax. APPEL AJAX " + DateTime.Now.ToLongTimeString());return PartialView("_PartialView", "Appel Ajax");}public IActionResult NormalAjaxCall(){return PartialView("_PartialView", "Appel Ajax normal");}public IActionResult ErrorAjaxCall(){throw new Exception("Une erreur s'est produite");}}
Toast non affiché après POST-REDIRECT
CORRECTIF Si vous utilisez CookieTempDataProvider (c'est la valeur par défaut), vous devez accepter l'invite de politique en matière de cookies.
npm install
npm build
dotnet restore
dotnet build
Exécutez n’importe quel exemple de projet à l’aide dotnet run
à partir du répertoire de projet exemple