Jquery 如何在mvc中使用form post方法从控制器操作打开弹出窗口

Jquery 如何在mvc中使用form post方法从控制器操作打开弹出窗口,jquery,asp.net-mvc,popup,Jquery,Asp.net Mvc,Popup,我想使用form post方法在控制器之后调用弹出窗口,以便在数据输入之后,信息可以通过弹出窗口显示 这是我的密码 看法 现在在这段代码中,我调用了弹出按钮点击事件 现在的问题是,当点击按钮时,在调用控制器之前,会调用此弹出窗口 但我不想这样 我想,当按钮被点击时,它进入控制器,然后,弹出窗口将生成。因此,成功消息将在弹出窗口中调用 谢谢。根据评论,您不想使用ajax表单提交。在这种情况下,您可以做的是,在http post操作中执行代码后,将重定向响应返回给GET操作。使用TempData传递

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

这是我的密码

看法

现在在这段代码中,我调用了弹出按钮点击事件

现在的问题是,当点击按钮时,在调用控制器之前,会调用此弹出窗口

但我不想这样

我想,当按钮被点击时,它进入控制器,然后,弹出窗口将生成。因此,成功消息将在弹出窗口中调用


谢谢。

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

[HttpPost]
public ViewResult Index(MailModelViewModel _objModelMail)
{
    try
    {
        TempData["message"] = "Email Sent Successfully";
        return RedirectToAction("Index");
    }
    catch (Exception ex)
    {
        // to do :Log your exception
        ModelState.AddModelError(string.empty,"Problem while sending email");
        return View("../Error");
    }
}
现在,在索引GET操作呈现的视图中,您将检查TempData字典并显示模式。因为我们是按程序进行的,所以不需要在单击提交按钮时启动它。因此,在表单中使用另一个提交按钮。另外,阅读要在模态正文中显示的消息的TempData项

@using (Html.BeginForm())  
{
    @Html.TextBoxFor(a=>a.Email)
    <input type="submit"/>
}
<!-- your existing code for the modal dialog markup goes here-->
<!-- Modal -->
    <div class="modal fade" id="myModal" role="dialog">

        <div class="modal-body">
            <h2><p style="color: red;">@TempData["message"]</p> </h2>
        </div>

    </div>
 <!-- Add the markup needed to render the modal dialog ends here-->
@section Scripts
{
    <script>
       $(function() {
           var r = '@TempData["message"]';
           if (r.length>0)
           {
                $('#myModal').modal('show');
           }
        });
    </script>
} 
@使用(Html.BeginForm())
{
@Html.TextBoxFor(a=>a.Email)
}

@TempData[“message”]

@节脚本 { $(函数(){ var r='@TempData[“message”]; 如果(r.长度>0) { $('myModal').modal('show'); } }); }
试试这个

在控制器中

[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");
    }
}
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>
 }
@if(TempData[“displaymodel”]!=null)
{
var modal=TempData[“displaymodel”].ToString();
$(文档).ready(函数(){
$('#@modal').modal('show');
});
}
在模态中

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

@TempData[“ProcessMessage”]


执行ajax提交,在成功/完成事件中,启动模式对话框。不,我不想使用ajax。这就是为什么我描述我想通过form post方法进行操作,然后重定向到您的GET操作,在那里您将在页面加载上启动模式。您可以通过代码向我显示哪些具体不起作用?它正在重定向到索引操作吗?如果是,请检查页面的视图源以查看变量
r
的字符串设置为TempData。如果是,请检查浏览器控制台是否存在阻止代码启动模式的任何其他脚本错误。
  <p style="color: red;">@TempData["ProcessMessage"]</p>