Oui, sur le web on utilise un petit loader au delà d'un temps de chargement donné pour que l'utilisateur ne se pose pas de question, idéalement un petit svg fait bien l'affaire.
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
Donc en faite je veux afficher mon SVG à un moment précis dans mon code. Ce n'est pas directement sur le clique du bouton que je veux que mon SVG s'affiche mais durant mon envoie de mail automatique qui met un certain temps.
J'aimerais savoir si c'est possible de faire apparaître mon SVG à partir de mon controller pour dire à ma vue "Tu affiches mon SVG quand je te le dit et pas au départ quand tu charges"
Voici le code de ma méthode où je souhaite appeler mon SVG :
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Client client)//Je mets mon objet créé en paramètre
{
if (!ModelState.IsValid)//Je vérifie si mon formulaire n'est pas valide
{ return View(client); }
if (ModelState.IsValid)//Je vérifie si mon formulaire est valide
{
//////////////////////////////////RECUPERAION DES INFORMATIONS DU FORMULAIRE//////////////////////////////////////////
string nom = "";//J'initialise ma variable de type string à vide
string prenom = "";//J'initialise ma variable de type string à vide
string mail = "";//J'initialise ma variable de type string à vide
nom = client.Nom;//Assigne la valeur récupérer à la variable Nom de mon modèle
prenom = client.Prenom;//Assigne la valeur récupérer à la variable Prenom de mon modèle
mail = client.Mail;//Assigne la valeur récupérer à la variable Mail de mon modèle
ViewData["message"] = "Merci " + prenom + " " + nom + " " + mail; //Récupère le message avec les valeurs que l'on souhaite pour réutiliser dans la vue lors de l'affichage
////////////////////////////////////TRAITEMENT DE L'ENVOIE DU MAIL DE CONFIRMATION CLIENT/////////////////////////////
MailMessage mail_n = new MailMessage();
mail_n.To.Add(mail);//Adresse du destinataire saisie dans le formulaire
mail_n.From = new MailAddress("toto.toto@gmail.com");//Adresse de l'émetteur (nous)
mail_n.Subject = "Objet message";//Sujet du mail
string Body = "Bonjour" + " " + prenom + " " + nom + " , notre société vous remercie pour votre confiance";//Le message envoyé
mail_n.Body = Body;
mail_n.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com"; //Adresse serveur SMTP
smtp.Port = 587; //Port de gmail (il en existe deux : 587 et 465)
smtp.Credentials = new System.Net.NetworkCredential("toto.toto@gmail.com", "");//Adresse mail et mot de passe
smtp.EnableSsl = true;
smtp.Send(mail_n);
db.Clients.Add(client);
db.SaveChanges();
return RedirectToAction("MessageFin");
}
return View(client);
}
Tu n'as pas besoin d'attendre la fin de l'envoi de mail pour rendre la main à l'utilisateur.
Si les actions se passent côté serveur c'est quand même plus sympa de rendre la main directement à l'utilisateur si ça n'a pas d'incidence sur le reste de sa visite.
Cela étant dit, tu vas devoir afficher ton loader côté javascript dans un appel ajax si tu y tiens toujours.
Appel ajax à ton action, pendant le traitement > loader, fin du traitement ou erreur > plus de loader
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
Le soucis que j'ai c'est que je veux pas que mon loader apparaissent directement quand je clique sur le bouton. J'aimerais qu'il débute quand le traitement du mail se fait. Car avant l'envoie de mail j'ai une création de fichier sur le PC du client (je ne l'ai pas mis dans le code du message au dessus).
Est-ce faisable de faire en sorte que mon loader apparaissent quand mes fichiers sont créer et que c'est le tour de l'envoie de mail ?
(Ce qui signifierais que ce n'est pas au clic du bouton que mon loader s'affiche)
Ce que je fais d'habitude, c'est quelque chose de plus générique.
En gros, pour tous les traitements du genre chargement pendant lesquels l'utilisateur n'a pas la main, si le traitement est plus long que X millisecondes alors j'affiche un loader et je le cache quand l'utilisateur récupère la main.
C'est un peu plus compliqué de déclencher ton loader côté client pendant un traitement particulier et ton utilisateur s'en fiche un peu, lui veut juste comprendre qu'il y a un chargement en cours et quand il peut reprendre la main. Donc n'hésite pas à faire un truc dans le même genre.
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.