MVC5 Ajax返回Partial未呈现

时间:2014-11-26 15:48:12

标签: asp.net-mvc asp.net-ajax

我有以下代码。当我通过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" };
        }            
    }

1 个答案:

答案 0 :(得分:2)

您的更新目标和div ID不匹配。

UpdateTargetId = "dlrsTable"

<div id="dlrTable">

请注意div id中缺少的 s (或UpdateTargetId中的额外一个