0

我正在另一个框架中创建一个插件,所以我无法更改控制器。我有一个 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

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

4

1 回答 1

0

这是由于RenderPartialViewToString("...", myModel)。在从操作返回结果之前直接渲染它。OnActionExecuted在控制器操作返回后调用方法。

当您return View(...)不渲染此视图时。它是返回模型并说这个模型到当前视图。视图的渲染将在稍后进行。

于 2013-01-01T07:12:24.177 回答