我在另一个框架中创建了一个插件,所以我没有能力改变控制器。我有一个动作过滤器对OnActionExecuted中的模型进行了更改。当控制器返回一个View时,这可以很好地工作。但是,如果页面使用AJAX,并且控制器使用RenderPartialViewToString的实现返回JSON结果,则在OnActionExecuted之前将结果(模型)返回给客户端。
我已经单步执行了调试器中的代码。返回View的顺序如下:
OnActionExecuting
controller's ActionResult SomeMethod()
return View(...
OnActionExecuted
SomeView.cshtml下面是使用AJAX时的顺序:
OnActionExecuting
controller ActionResult SomeMethod()
return Json(... html = this.RenderPartialViewToString("...", myModel)
SomeView.cshtml
OnActionExecuted关于如何在部分视图中返回模型之前修改模型,有什么想法吗?
发布于 2013-01-01 15:12:24
这要归功于RenderPartialViewToString("...", myModel)。您可以在从action返回结果之前直接呈现它。方法OnActionExecuted在控制器操作返回后调用。
当你return View(...)它不是渲染这个视图。它将模型返回到当前视图,并表示该模型。视图的渲染将在稍后。
https://stackoverflow.com/questions/14108394
复制相似问题