如何使用mvc中的表单post方法从控制器操作打开弹出窗口

时间:2017-11-25 16:24:35

标签: jquery asp.net-mvc popup

我想在控制器之后使用form post方法调用弹出窗口,以便在数据输入后弹出窗口显示信息。

这是我的代码

查看

@using (Html.BeginForm())  
{
    @Html.AntiForgeryToken()  
    <div class="form-horizontal">  

        <input type="submit" value="Send" class="btn btn-primary" data-toggle="modal" data-target="#myModal" style="margin-left:195px"/>  
    </div>    

        <div class="container">
        <!-- Modal -->
        <div class="modal fade" id="myModal" role="dialog">
            <div class="modal-dialog">

                <!-- Modal content-->
                <div class="modal-content" style="background-color: green">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                    </div>
                    <div class="modal-body">
                        <h2>
                            <p style="color: red;">@ViewBag.Status</p>
                        </h2>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </div>
                </div>

            </div>
        </div>

    </div>
}  

控制器

[HttpPost]
public ViewResult Index(SchoolWebApplication.ViewModel.MailModelViewModel _objModelMail)
{
    try
    {
        ViewBag.Status = "Email Sent Successfully.";
        return View(); 
    }
    catch (Exception)
    {
        ViewBag.Status = "Problem while sending email, Please check details.";
        return View("../Error");
    }
}

现在在这段代码中,我通过按钮点击事件调用弹出窗口。

现在的问题是,当单击按钮并在控制器调用之前调用此弹出窗口。

但我不想那样。

我想要在单击按钮时进入控制器,之后会生成弹出窗口。因此,成功消息将在弹出窗口中调用。

谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个

在控制器

TempData["ProcessMessage"] = "Email Sent Successfully.";
TempData["displayModal"] = "myModal";
return View(); 

在视图中

@if (TempData["displayModal"] != null)
 {
   var modal = TempData["displayModal"].ToString();
    <script type='text/javascript'>
        $(document).ready(function(){
            $('#@modal').modal('show');
        });
    </script>
 }

在模态中

  <p style="color: red;">@TempData["ProcessMessage"]</p>

答案 1 :(得分:0)

根据评论,您不希望使用ajax表单提交。在这种情况下,您可以执行的操作是,在http post操作中执行代码后,返回对GET操作的重定向响应。使用TempData传递您要传递的消息,并在GET操作呈现的视图中,检查TempData字典中您之前设置的值,并执行所需的javascript代码以在页面加载/文档就绪事件上启动模式对话框

props

现在,在Index GET操作呈现的视图中,您将检查TempData字典并显示模式。由于我们正在进行programaticaly,因此无需在提交按钮单击时触发它。因此,请为表单使用其他提交按钮。另外,请阅读TempData项目以获取要在模态体中显示的消息。

render