当前代码示例:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ActionName(ViewModel model)
{
if (!ModelState.IsValid)
{
return PartialView(model);
}
var result = //something
if (result.Succeeded)
{
return PartialView(model);
}
AddErrors(result);
return PartialView(model);
}
表格Html
@model ViewModel
@using (Html.BeginForm("ChangePassword", "Manage", FormMethod.Post, new { @id = "Form"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new { @class = "text-danger" })
//Controls
<div class="form-group">
<input type="submit" value="Save" data-loading-text="Loading..." class="btn btn-default" />
</div>
}
JQuery代码模板:
$("#Form").on('click', ".btn", function (e) {
e.preventDefault();
$.ajax({
url: "Something/ActionName",
//datatype: "text",
data: $('#Form').serialize(),
type: "POST",
success: function (data) {
$("#Form").html(data);
},
error: function (result) {
alert(result);
}
});
});
现在我如何知道AJAX POST是否成功并同时返回部分视图?返回PartialView以重置表单控件并清除最后一篇文章中的错误。
我们可以使用var和RenderPartialView创建一个Json结果作为字符串值。请参阅MVC Return Partial View as JSON:
if (data.Result == "Success") {
alert("Data Saved");
}
$("#Form").html(data);
然而,我错过了一个更容易的选择吗?