web-dev-qa-db-fra.com

Comment utiliser la boîte de message dans le contrôleur MVC?

J'ai créé une application MVC. L'utilisateur doit s'inscrire et une fois qu'il est terminé, je le redirige vers la page "merci". Cependant, je voudrais simplement montrer à l'utilisateur une fenêtre contextuelle avec ce message. Comment puis-je atteindre cet objectif?

Mon code:

[HttpPost]
public ActionResult Enquiry(Enquiry enquiry)
{
    if (ModelState.IsValid)
    {
        dbEntities.Enquiries.AddObject(enquiry);
        dbEntities.SaveChanges();
        enquiry.SendEnquiryEmail(enquiry);

        return RedirectToAction("Thankyou"); 
    }

    return View(enquiry);
}

//redirect to thankyou page
public ActionResult Thankyou()
{
    return View();
}
9
Neo

@Reynolds

Votre réponse est parfaite.

Dans Razor, la ligne suivante peut être remplacée

alert("@TempData[alertMessage]");

par le suivant

alert('@TempData["alertMessage"]');

PS. Remarquez les citations

5
Dhruv Rangunwala

Pour vous assurer que votre "alerte" dans votre vue ne s'affiche que lorsque vous avez l'intention (une redirection à partir de votre méthode ThankYou) et non lorsque quelqu'un accède accidentellement à votre vue "ThankYou"

//redirect to thankyou page
public ActionResult Thankyou()
{
    TempData["alertMessage"] = "Whatever you want to alert the user with";
    return View();
}

Ensuite, dans votre vue "Merci", ceci:

   if(null != TempData["alertMessage"])
   {
      <script type="text/javascript">
       alert("@TempData[alertMessage]");
      </script>
   }

Cela écrira le script comme vous le feriez normalement pour tout JavaScript. J'espère que cela t'aides!

13
Reynolds

dans le contrôleur, utilisez ce code

public ActionResult Edit(CoverLetterModel model)
{
    TempData["msg"] = "<script>alert('Change succesfully');</script>";
}

en vue utiliser ce code

@Html.Raw(TempData["msg"])
5
vicky

Il semble que vous souhaitiez peut-être afficher la boîte de message "merci" sur la vue où l'utilisateur entre les données d'enregistrement?

Si tel est le cas, vous devez AJAX POST à une action, puis gérer le message de réussite/d'échec qui revient de l'action dans votre javascript côté client .

Une chose à garder à l'esprit si vous faites cela est que vous ne voulez pas que vos utilisateurs cliquent sur le bouton "soumettre" plusieurs fois, vous pouvez donc le masquer ou le désactiver après le premier clic et l'afficher/l'activer en cas d'erreur de validation. ..

3
Tony Ranieri

Sur le Web, vous devrez utiliser Javascript pour afficher une boîte de message. La syntaxe (pour accéder à votre vue, c'est dans sa forme la plus simple)

Alert("Hello There!");

Vous ne pouvez pas appeler cela directement depuis votre contrôleur. Mettez simplement le code ci-dessus dans votre vue Merci.

C'est très simple mais cela devrait vous donner le concept.

1
LiamB