web-dev-qa-db-fra.com

Afficher un message de confirmation contextuel avec MVC C # après publication

Utilisation de MVC Framework avec le codage C #. Les vues sont écrites en code HTML standard. J'ai besoin d'un message de confirmation disant "Votre message a été envoyé" une fois que l'utilisateur a cliqué sur le bouton d'envoi

Voici le contrôleur:

public ActionResult Index(ContactViewModel contactVM){
        if (!ModelState.IsValid)
        {
            string url = Request.UrlReferrer.AbsolutePath+ "#contact";

            return View();
        }
        else
        {
            var contact = new Contact
            {
                Name = contactVM.Name,
                Email = contactVM.Email,
                Subject = contactVM.Subject,
                Message = contactVM.Message
            };
            new Email().Send(contact);
            return RedirectToAction("Index");
        }

Voici la vue:

<input type="submit" class="submit_btn left" name="Submit" id="submit" value="Submit"/>
<input type="reset" class="submit_btn right" name="Reset" id="reset" value="Reset" />

Aider avec bonté.

4
Gman16

Au lieu de RedirectToAction(), retournez View:

    new Email().Send(contact);

    ViewBag.Message = "Message Sent"; 

    return View();

En vue:

@if(ViewBag.Message != null)
{
<script>

$(document).ready(function(){

alert('@ViewBag.Message');

});

</script>

}
13
Ehsan Sajjad

Ajouter un contrôleur interne

        ViewBag.IsEmailSent=true;



public ActionResult Index(ContactViewModel contactVM){
            if (!ModelState.IsValid)
            {
                string url = Request.UrlReferrer.AbsolutePath+ "#contact";

                return View();
            }
            else
            {
                var contact = new Contact
                {
                    Name = contactVM.Name,
                    Email = contactVM.Email,
                    Subject = contactVM.Subject,
                    Message = contactVM.Message
                };
                new Email().Send(contact);
                ViewBag.IsEmailSent=true;
                return RedirectToAction("Index");
            }

Page index.cshtml

   @if(ViewBag.IsEmailSent)
    {
    <script>
$(function(){
     $("#successModal").modal('show'); });
    </script>
    }
2
aamir sajjad

Remplacez le résultat (de RedirectToAction("Index")) par une vue fournissant la confirmation.

Si vous ne voulez pas que quelque chose soit la plupart du temps une copie d'une page existante (telle que Index), transmettez un objet contenant un indicateur ShowConfirmation et, dans la vue Index, une logique permettant d'afficher la confirmation si cet indicateur est défini.

0
Richard