ActionFilter - OnActionExecuted被称为AFTER Json结果返回

时间:2013-01-01 06:29:09

标签: json action-filter

我正在另一个框架中创建一个插件,所以我无法更改控制器。我有一个ActionFilter在OnActionExecuted中对模型进行了更改。当控制器返回视图时,这可以正常工作。但是,如果页面使用AJAX并且控制器使用RenderPartialViewToString的实现返回JSON结果,则结果(模型)将在OnActionExecuted之前返回给客户端。

我已经完成了调试器中的代码。 这是返回视图时的序列:

 OnActionExecuting

 controller's ActionResult SomeMethod()
   return View(...

 OnActionExecuted

 SomeView.cshtml

这是使用AJAX时的顺序:

 OnActionExecuting

 controller ActionResult SomeMethod()
   return Json(...  html = this.RenderPartialViewToString("...", myModel)

 SomeView.cshtml

 OnActionExecuted

关于如何在部分视图中返回模型之前修改模型的任何想法?

1 个答案:

答案 0 :(得分:0)

归功于RenderPartialViewToString("...", myModel)。在从操作返回结果之前直接呈现它。在控制器操作返回后调用方法OnActionExecuted

当你return View(...)时,它不会渲染此视图。它是返回模型,并将此模型说成当前视图。稍后将呈现视图。