2016-12-02 10 views
0

コントローラ内のメソッド内でViewDataにアクセスすると、その値を辞書ieの形式で割り当てることができます。ViewResultオブジェクト内でViewDataプロパティを初期化する

ViewData["message"]="this is a custom message"; 

が、私は、私はMVCでの例外を処理しようとしていたシナリオに入った、ここに私のコードは次のとおりです。例外を取り扱う際

public void OnException(ExceptionContext filterContext) 
     { 
      if (!filterContext.ExceptionHandled && (filterContext.Exception is ArgumentOutOfRangeException)) 
      { 
       filterContext.Result = new ViewResult { ViewName = "Error", ViewData = }; 
       filterContext.ExceptionHandled = true; 
      } 
     } 

今私はエラーにメッセージを渡したいですページで、ExceptionContextのResultプロパティにアクセスしようとしました。 今

私の質問ですが、なぜ午前Iこれはまた、ViewDataDictionaryオブジェクトを返すプロパティです ここで辞書のような形式

filterContext.Result = new ViewResult { ViewName = "Error", ViewData = }; 

をViewDataをに値を割り当てることができませんこのようなControllerメソッドで値を代入できるのはいつですか?ViewData ["message"] = "引数例外エラー";なぜ私は内部で同じことをすることができないのですかViewResultオブジェクト

答えて

0

私はMVCフレームワークの内部動作を理解していますが、間違っていると私を修正してください。フレームワークの詳細については、説明をお願いします。

私は、コントローラのメソッド内のViewDataにアクセスすると、私は にできる午前私たちは、コントローラとメソッドを呼び出すときに、MVCがかかるので、これは辞書

の形で値を割り当てますすべてのプロパティにオブジェクトを割り当てる責任があるので、メソッド内のViewDataに値を割り当てることができます。

filterContext.Result = new ViewResult {ViewName = "Error"、ViewData = };私たちがするViewResultクラスのViewDataをプロパティを扱っているとき、それはViewDataDictionaryオブジェクトを必要とするため、私たちはこのようのViewData [「キー」] =「いくつかの値」に、値を代入することはできません

。これを行うことで、このような値を割り当てることができます

var d = new ViewDataDictionary(); 
       d["key"] = "some value"; 
       filterContext.Result = new ViewResult { ViewName = "Error",ViewData=d }; 
関連する問題