我正在使用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
}
}