【问题标题】:Display popup confirmation message with MVC C# after postback回发后使用 MVC C# 显示弹出确认消息
【发布时间】:2024-05-12 18:00:02
【问题描述】:

使用带有 C# 编码的 MVC 框架。视图是用标准 HTML 代码编写的。 一旦用户单击提交按钮,我需要一条确认消息,上面写着“您的消息已发送”

这里是控制器:

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");
        }

这是视图:

<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" />

请提供帮助。

【问题讨论】:

    标签: c# asp.net-mvc dialog showmodaldialog


    【解决方案1】:

    代替RedirectToAction(),返回View

        new Email().Send(contact);
    
        ViewBag.Message = "Message Sent"; 
    
        return View();
    

    在视图中:

    @if(ViewBag.Message != null)
    {
    <script>
    
    $(document).ready(function(){
    
    alert('@ViewBag.Message');
    
    });
    
    </script>
    
    }
    

    【讨论】:

    【解决方案2】:

    添加内部控制器

            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");
                }
    

    Index.cshtml 页面

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

    【讨论】:

      【解决方案3】:

      将结果(从RedirectToAction("Index"))更改为提供确认的视图。

      如果您不想拥有主要是现有页面副本的内容(例如Index),则传递一个包含ShowConfirmation 标志的对象,并在索引视图中使用一些逻辑来显示确认是否该标志已设置。

      【讨论】: