MVC 5 PartialView更新与AJAX不更新视图?

时间:2017-10-23 14:42:06

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

我正在使用AJAX使用某些条件逻辑来更新MVC视图的一部分。我之前发布了这个问题,并指出使用PartialView构建整个HTML表格,然后将其传递回View。

这引导我使用这篇文章和一个例子。 https://www.red-gate.com/simple-talk/dotnet/asp-net/revisiting-partial-view-rendering-in-asp-net-mvc/

然后我拿出我的表格代码并将其放入部分视图中。一切都运作得很好。但是,现在我尝试使用AJAX进行更新,并且数据库的实际更新正在运行,但View的更新却没有。

换句话说,当我点击"测试"在下面的代码中的按钮我可以看到它转到控制器中的HttpPost以及看到数据库正在更新。但是,页面没有更新。我必须再次刷新页面以查看更改。

我认为它与视图中的@ Html.Partial调用有关,但我没有弄清楚我需要做些什么来修复它。

从我所读到的内容听起来好像当我进行AJAX调用并返回HTML时它应该替换我DIV中的所有内容。

以下是我在视图中的内容。在最初查看页面时,@ Html.Partial按预期填充表。

<div id="exceptionTable">
    @Html.Partial("_DailyLogExceptionsTable", Model.listExceptions)
</div>

这是我的AJAX电话。我可以看到价值通过。 RID是记录ID,arg将是&#34; A&#34;的静态值。或&#34; D&#34;取决于他们将点击哪个按钮。

function ApproveDeny(rid, arg) {
    var url = "/Exception/ExceptionApproveDeny/";
    $.post(url, {rid:rid, arg:arg})
    .done(function (response) {
        $("#exceptionTable").html(response);
    })
};

这是我的ActionResult,它通过DAL更新数据库。然后我创建一个新的ViewModel,调用获取新的Exceptions列表,然后再次调用PartialView,将新的异常列表传递给它。

public ActionResult ExceptionApproveDeny(int rid, string arg, string shift) 
{
    try
    {
        DAL.ExceptionApproveDeny(rid, arg);

        var vm = new ExceptionLogDailyTableViewModel();
        vm.listExceptions = DAL.GetEmployeeExceptionsByDate(CurrentEmployeeId, DateTime.Parse(shift));

        return PartialView("_DailyLogExceptionsTable", vm);
    }
    catch (Exception ex)
    {
        //error code
    }
}

0 个答案:

没有答案
相关问题