我有以下bootbox片段,我在其中通过ajax调用加载消息:
$.ajax({
type: "GET",
url: $("#add-name").val(),
success: function (data) {
bootbox.dialog({
message: data,
title: "Floorplan Group",
buttons: {
success: {
label: "OK",
className: "btn-success",
callback: function () {
//what to do here?
}
}
}
});
}
});
这是data
返回的内容,并加载到我的bootbox对话框的正文中。
@model Monitoring.ViewModels.NameViewModel
@using (Html.BeginForm("AddName", "Users", FormMethod.Post, new {@class = "form-horizontal",}))
{
@Html.EditorFor(m => m.Name)
}
这是我的控制人员:
[HttpPost]
public ActionResult AddName(NameViewModel model)
{
if (!ModelState.IsValid)
{
//return error
}
//add into DB
return View(model);
}
如何将表单发回给我的控制器?在bootbox的回调中需要什么代码,以便它返回我的表单,如果ModelState中有任何错误,我的bootbox对话框将保持打开状态,否则对话框将按照正常情况关闭。 / p>
答案 0 :(得分:0)
首先在您看来,您需要为验证错误消息添加显示,这是通过@Html.ValidationSummary()
完成整个过程的最简单方法,您还可以考虑使用@Html.ValidationMessageFor()
。我为表单添加了一个id,以便在javascript中更轻松地发布表单。
@model Monitoring.ViewModels.NameViewModel
@using (Html.BeginForm("AddName", "Users", FormMethod.Post, new {@class = "form-horizontal", @id="SomeFormId"}))
{ @Html.ValidationSummary(false)
@Html.EditorFor(m => m.Name)
}
我不确定上述视图的名称是什么,所以我在控制器中命名为#34; View1",您需要:
[HttpPost]
public ActionResult AddName(NameViewModel model)
{
if (!ModelState.IsValid)
{
return View("View1", model); // pass the invalid model back to the form view
}
//add into DB
return View(model);
}
在你的javascript中:
$.ajax({
type: "GET",
url: $("#add-name").val(),
success: function(data) {
bootbox.dialog({
message: data,
title: "Floorplan Group",
buttons: {
success: {
label: "OK",
className: "btn-success",
callback: function() {
$("SomeFormId").submit(); // Post the form
}
}
}
});
}
});