我是新來的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
對不起,遲到了,是的,我確實檢查了它,並且對你說實話,我發現有近三篇文章談論渲染局部視圖,這是我第一次考慮,因爲你的先生你的解決方案對我來說很方便,並且激勵我要做更多的事情,我即將嘗試,但我認爲它會對我很好,謝謝你先生你的答案是夠好,但我認爲你發佈的控制器中有一些代碼錯誤,檢查以便任何人都可以獲得幫助從它,再次感謝您先生.. –
謝謝先生,它作爲一種魅力^ _ ^! 我花了長期應用它,我有這麼多用它做,它的工作就好了再次感謝你.. 如果碰巧發現更專業增強這一解決方案,請更新您的答案, –