gpt4 book ai didi

javascript - 如果满足条件,则从 Controller 返回 JsonResult 中的模式确认框

转载 作者:行者123 更新时间:2023-11-28 05:33:42 24 4
gpt4 key购买 nike

大家好,我遇到以下情况:我有一个 View ,其中有一个保存按钮,该按钮正在序列化表单并通过 Ajax 将其发送到 Controller 中的 JsonResult。在此 JsonResult 中,我正在数据库中添加/编辑表。我的问题是,如果存在某种条件,是否可以向 View 返回确认框。下面是我的代码。提前致谢:)

在我看来,这是通过 ajax 将表单数据发送到 Controller 的 javascript。

<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');

}
});
}

这是我正在接收表单数据的 Controller 代码:

 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'sRender 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();
}
}

现在,您只需根据需要调用此方法即可获取 View 结果的字符串版本

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 的 View ,其中包含引导模式对话框所需的标记,如下所示

<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</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);
}

}

关于javascript - 如果满足条件,则从 Controller 返回 JsonResult 中的模式确认框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com