だから、私はこれがMVC3の前のプロジェクトで機能しているのを見たので、a)私がそれを台無しにしたのか、b)MVC4が何か違うことをしているのか(そうなるとは思えない)疑問に思います。
私は、コントローラーアクションメソッドにサブミットするモデルバインドされたRazorビューを持っています(MVCの場合と同様)
アクション後の方法:
[HttpPost]
[AutoMap(typeof(MyViewModel), typeof(MyDomainObj))]
public void PostAction(MyDomainObj obj)
{... etc.. etc..
アクションフィルターは、最終的に次のようなことを行います。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var model = filterContext.Controller.ViewData.Model;
注:Jimmy Bogardの例では、私も試したOnActionExecutedを使用しました。
私が抱えている重要な問題は、コンテキストから「モデル」変数を取得するポイントでは、それがnullであるということです。デバッグ中にfilterContext.ActionParametersを見ると、MyDomainObjインスタンスが表示されます。これは(MyViewModelタイプと共通のプロップ名を持っているため)私のフォームデータからマッピングされているように見えます!
したがって、はい。このメソッドのパラメーターとしてMyViewModelタイプを使用した場合、パラメーターは送信されたフォームから適切に入力されます。だが。私はそれをしたくありません、私は実行された/実行されたアクションの一部としてビューモデルをドメインモデルに変換したいと思います(そして以前はJBの簡潔なハウツーに基づいて行いました)そしてそれからちょうど私の保存を押すことができましたドメインモデル。
まとめ-アクション後のフィルターでViewData.Modelがnullになるのはなぜですか?