OnActionExecuted メソッドをオーバーライドした ActionFilter があります。filterContext.Controller.ViewData.Model は、POST 操作では常に null です。null であってはならないと言っているように見える次の記事を見つけましたが、これは以前のバージョンの MVC であったに違いありません。これがMVC3です。私は何を得るべきですか?
アップデート:
元の質問に対する答えを見つけました。カスタム日付フォーマッタで JSON を出力するカスタム ActionResult がありました。問題は、モデルがコントローラーに設定されていないことでした。
私のカスタム ActionResult では、ExecuteResult メソッドに ControllerContext が渡されます。ここで Model を設定できると便利です。
context.Controller.ViewData.Model = _data;
しかし、これはサイクルの後半であり、結果はActionFilterでまだnullです。これは、コントローラーにモデルを手動で設定する必要があることを意味しているようです。
ControllerContext.Controller.ViewData.Model = model;
または
View(model);
つまり、このカスタム ActionResult を使用するたびに、これを行うことを忘れないでください。もっとエレガントな方法はありますか?
さらに別の更新:
これを行う方法を見つけましたが、思ったほどエレガントではありません。
コントローラーで送信するcomstom ActionResultのコンストラクターでは、少なくとも常に一貫性が保たれます。
public JsonNetResult(object data, Controller controller) {
SerializerSettings = new JsonSerializerSettings();
_data = data;
controller.ControllerContext.Controller.ViewData.Model = _data;
}