我有以下代码。当我通过Ajax subit时,我可以看到调用转到控制器,它返回正确的结果。但是,虽然它返回成功,但部分不会更新。它几乎肯定是我正在做的蠢事,但是我已经开始这么久了,现在我围成一圈。
我怀疑我需要以不同方式处理JSON数据,如果我想将其显示为部分模型中的一组模型。但是,由于我仍然在寻找MVC和ajax的脚,目前它有很多反复试验。
@{
System.Web.Mvc.Ajax.AjaxOptions ajaxopts = new AjaxOptions()
{
HttpMethod = "Post",
UpdateTargetId = "dlrsTable",
OnBegin = "OnBegin",
OnComplete = "OnComplete",
OnSuccess = "OnSuccess",
OnFailure = "OnFailure"
};
}
@using (Ajax.BeginForm("RefreshGrid", "Dealership", ajaxopts, new { id = "allDlrs" }))
{
@Html.Hidden("showArchived", false )
@Html.Hidden("ShowPage", 0)
@Html.AntiForgeryToken()
<div id="dlrTable">
@{Html.RenderPartial("_allDealerships", Model);}
</div>
}
和我的控制员;
public async Task<JsonResult> RefreshGrid(bool? showArchived, int? ShowPage)
{
try
{
//code elided, I can see it works and mappedDlrs contains the new data I want
return new JsonResult(){ Data = mappedDlrs };
}
catch (Exception ex)
{
_log.Error(ex, string.Format("Error in DealershipController.AllDealerships - Session {0}", Session.SessionID));
return new JsonResult() { Data = "Error curred" };
}
}
答案 0 :(得分:2)
您的更新目标和div ID不匹配。
UpdateTargetId = "dlrsTable"
<div id="dlrTable">
请注意div id中缺少的 s (或UpdateTargetId中的额外一个
)