0

別のフレームワーク内でプラグインを作成しているため、コントローラーを変更できません。OnActionExecuted でモデルに変更を加える Actionfilter があります。これは、コントローラーがビューを返すときに正常に機能します。ただし、ページが 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 に答える