我想在控制器之后使用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">×</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");
}
}
现在在这段代码中,我通过按钮点击事件调用弹出窗口。
现在的问题是,当单击按钮并在控制器调用之前调用此弹出窗口。
但我不想那样。
我想要在单击按钮时进入控制器,之后会生成弹出窗口。因此,成功消息将在弹出窗口中调用。
谢谢。
答案 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