我是新来的Ajax和JQuery,所以我需要你原谅我,如果我想做一些愚蠢的事情,我正在使用MVC 5和Ajax.Beginform , 和我想要做的是我有一个ajax窗体,我需要验证它与jquery不显眼,如果我正确使用ModelState的Jquery验证工作,并将返回视图,如果是一个验证错误发现,在这种情况下,我需要所以出现在浏览器用户的确认消息,例如这里更新我的形式是我的控制器:Ajax.BeginForm处理两个不同的onSuccess响应,MVC 5,C#
[HttpPost]
public ActionResult Index(AddProduct model)
{
if (ModelState.IsValid)
{
// connect to the database save data etc...
return PartialView("~/Views/Shared/_MyModal.cshtml");
}
else
{
return View(model);
}
}
如果ModelState.IsValid我应该保存的数据,并返回局部视图(Bootstrap Modal)指示数据已成功保存,否则它将返回整个视图以显示验证消息,并要做到这一点,我必须将ajax表单的TargetId包装为更新的整个ajax表单, 这里的AJAX形式:
<div id="result">
@using (Ajax.BeginForm("Index", new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "result",
HttpMethod = "POST",
OnBegin = "onBegin();",
OnComplete = "onCompleated();",
OnSuccess = "onSuccess()",
OnFailure = "onFailure()"
}))
{
@Html.ValidationSummary(true)
<div id="form1" class="form-horizontal">
<div class="row">
<div class="form-group">
@Html.LabelFor(m => m.Name, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Name, String.Empty, new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Price, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Price, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Price, String.Empty, new { @class = "form-help form-help-msg text-red" })
</div>
</div>
<div class="form-group">
<button class="btn btn-default col-md-2 col-md-offset-2" type="submit">Save </button>
</div>
</div>
</div>
}
</div>
否则我会返回一个局部视图,并显示为引导模态,我需要在这种情况下,不更新Ajax表单目标ID我需要保持它的完整和公正的显示莫塔尔,但问题是在这两种情况下的ModelState.IsValid或不是有效的所有响应fires onSuccess方法在Ajax形式我不知道这些是正常与否,这里是JavaScript onsuccess()方法:
function onSuccess() {
$('#myModal').modal('hide')
$("#resultModal").modal({
backdrop: 'static',
keyboard: false
});
$('#resultModal').on('hidden.bs.modal', function (e) {
window.location = "/product";
});
}
$(#“myModal”)模态(“隐藏”)是一种进步莫代尔我隐藏它的发布具有完成后,接下来的步骤是我显示结果莫代尔,我曾当过帐返回它没有验证错误执行罚款, 问题是:
我得到更新在阿贾克斯的形式就好了,如果验证错误恰好是存在使用UpdatetargetId的形式,但这是发生什么办法,如果我回国验证错误或部分视图,关心莫代尔对我来说,在两种情况下形式消失,这是我不会做的事情, 我需要保持形式以防r eturn内容是部分视图和更新情况ModelStat验证错误,也许我想念了解一切,但如果我是,我需要一些解释让我回到正轨。
我做了一个丑陋的代码和凌乱,我不喜欢在onSuccess()Mehtod如上所述,我用事件火灾时,当我关闭我的结果莫代尔重定向我再次索引,所以窗体显示再次,但它不干净,我不喜欢它,如果存在,我需要一些专业。
谢谢你在前进,
嘿,你检查了我的解决方案吗? – MDDDC
对不起,迟到了,是的,我确实检查了它,并且对你说实话,我发现有近三篇文章谈论渲染局部视图,这是我第一次考虑,因为你的先生你的解决方案对我来说很方便,并且激励我要做更多的事情,我即将尝试,但我认为它会对我很好,谢谢你先生你的答案是够好,但我认为你发布的控制器中有一些代码错误,检查以便任何人都可以获得帮助从它,再次感谢您先生.. –
谢谢先生,它作为一种魅力^ _ ^! 我花了长期应用它,我有这么多用它做,它的工作就好了再次感谢你.. 如果碰巧发现更专业增强这一解决方案,请更新您的答案, –