如果有条件,在JsonResult中返回一个模态确认框
Return a modal confirmation box in a JsonResult from controller if a condition
大家好,我有以下情况:我有一个视图,其中我有一个保存按钮,序列化表单并通过Ajax将其发送到控制器中的JsonResult。在这个JsonResult中,我在数据库中添加/编辑表。我的问题是,如果存在某个条件,是否可以向视图返回确认框。下面是我的代码。提前感谢:)
这是javascript在我的视图,是通过ajax发送表单数据到控制器。
<script>
function submitForm() {
$.ajax({
type: 'POST',
url: '@Url.Action("UpdateEvent", "EventCalendar")',
data: $('#UpdateEventForm').serialize(),
success: function (eventoId) {
$('#modal-edit-event').modal('hide');
$('#calendar').fullCalendar('refetchEvents');
}
});
}
这是我的控制器代码,正在接收表单数据:
public JsonResult UpdateEvent(.........)
{
List<Guid> usersChanged = new List<Guid>();
.
.
.
if(usersChanged.Count() > 0)
{
//Here is where i want to call a confirmation box
}
.
.
.
return Json(eventId, JsonRequestBehavior.AllowGet);
}
}
这是可能的。您所要做的就是返回在模态对话框中显示所需的HTML标记。
在这里,我使用RenderRazorViewToString
方法(来自Ben Lesh的回答onRender a view as a string)
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
现在,您只需要根据需要调用这个方法来获取viewresult
的字符串版本public ActionResult UpdateEvent()
{
if (SomeConditionHere)
{
var modalMarkup = RenderRazorViewToString("MyModalView", null);
return Json(new { status = "failed", data = modalMarkup },
JsonRequestBehavior.AllowGet);
}
return Json(new { status = "success", eventId = 123 }, JsonRequestBehavior.AllowGet);
}
假设您有一个名为MyModalView.cshtml
的视图,该视图具有引导模式对话框所需的标记,如下所示
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<h2>Modal content</h2>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
确保ajax调用的成功事件回调方法正在检查返回的json数据,并根据status属性值,根据需要使用data/eventId。
success: function (res) {
$("#myModal").remove();
if (res.status === "failed") {
$('<div id="myModal" class="modal fade"><div class="modal-dialog" role="document">'
+res.data
+'</div></div>')
.modal();
} else {
alert("eventId is : "+ res.eventId);
}
}
相关文章:
- 打开一个模态并将其链接到AngularJS中的指令
- bootstrap消除模态并显示另一个模态
- 如何将一个模态放在一边-显示其他模态(像..这样的向导)
- 当你有很多文本框时,如何从一个模态中只填充一个文本框
- 将数据从一个模态发送到另一个模态
- 创建一个模态指令,并将click事件绑定到angular js中
- 打开一个模态(在Codeigniter中),该模态从依赖于phpvar的URL加载(在iframe中)内容
- 创建一个模态窗口以使用 AngularJS 加载数据
- 引导多个模态关闭所有与最后一个模态
- 基础 - 在关闭另一个模态时打开另一个模态
- 角度:在另一个模态指令中加载的谷歌地图指令保持空白
- 当按下当前模态上的按钮时,如何触发另一个模态
- 当数据库中已经存在 fname 时,我想弹出一个模态
- 无法从引导 PHP 中的另一个模态调用模态
- 用Javascript弹出一个模态
- 在整个谷歌地图上放置透明的覆盖(就像一个模态覆盖)
- 在JQuery-ajaxbeforesend中调用一个模态对话框来收集一些信息
- 试图使一个模态弹出菜单
- 如何将输入字段绑定到一个模态输入字段
- 在第一个模态中打开另一个模态时,启动模态问题