【发布时间】:2017-03-06 22:12:21
【问题描述】:
我在 UI 上有这个按钮,客户将在其中打开一个模式。该模态将加载由 Ajax 检索到的局部视图。
$('#btnfeedback').on('click', function(e) {
e.preventDefault();
var debateModal;
$.get('@Url.Action("LoadFeedbackModal", "Home")', function() {
}).done(function(info) {
debateModal = bootbox.dialog(
{
message: info,
title: '<span class="fa fa-wechat"></span> Leave Feedback',
closeButton: true
});
debateModal.find('.modal-header').removeClass('modal-header').addClass('modal-header-info');
}).fail(function() {
debateModal = bootbox.alert({ message: "Problem try later", size: 'small' });
});
});
这是我的控制器:
[HttpGet]
public ActionResult LoadFeedbackModal()
{
return PartialView("Partials/_FeedbackModal", new FeedbackVm());
}
[HttpPost]
public ActionResult LoadFeedbackModal(FeedbackVm feedback)
{
try
{
var fb = Mapper.Map<Feedback>(feedback);
Db.Feedbacks.Add(fb);
Db.SaveChanges();
return Json(new { Mensaje = "Thanks for your feedback", Status = true }, JsonRequestBehavior.AllowGet);
}
catch (Exception exception)
{
return Json(new { Mensaje = "HUbo un problema :( Intenta luego", Status = false }, JsonRequestBehavior.AllowGet);
}
}
这是我的部分观点:
@model TuGrietaLive.ViewModels.Admin.Index.FeedbackVm
@using (Html.BeginForm("LoadFeedbackModal", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<p>
Muchas gracias por tu Feedback. Para nosotros es muy importante.
<small>Si nos dejas tu correo te podemos contestar :)</small></p>
<div class="form-group">
@Html.LabelFor(m => m.FeedbackType, new { @class = "control-label col-md-2 col-xs-12" })
<div class="col-md-10 col-xs-12">
@Html.EnumDropDownListFor(model => model.FeedbackType, "Selecciona una Categoria", new { @class = "form-control", name = "FeedbackType" })
@Html.ValidationMessageFor(model => model.FeedbackType)
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2 col-xs-12">Email <small>(Opcional)</small></label>
<div class="col-md-10 col-xs-12">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control"} })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Comment, new { @class = "control-label col-md-2 col-xs-12" })
<div class="col-xs-12 col-md-10 ">
@Html.EditorFor(model => model.Comment, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Comment, "", new { @class = "text-danger", rows = 10 })
</div>
</div>
<button type="submit" id="btnsendFeedback" autofocus class="btn btn-block btn-success">
<span class="glyphicon glyphicon-envelope"></span>Enviar
</button>
</div>
}
我可以成功获取视图并且模态绘制部分。现在我想在提交表单后得到服务器的响应。
如何获得发布操作消息?此代码打开一个带有 JSON 对象的新窗口。我想捕捉它并打开一个模式。这可要了我的命。
【问题讨论】:
-
我假设“表单”是指最后一个代码块中显示的表单?
标签: javascript jquery ajax asp.net-mvc bootbox