2011-08-16 18 views
1

私は2つのCotrollersを持っています。 最初にViewDataプロパティを次のように設定します。 ViewData ["Error"] = "something"; このメッセージをページに表示できます。 2番目のコントローラがグリッドを読み込みます。 そのCotrollerからViewDataプロパティを設定しようとすると、ページに表示されません。ViewData in ASP.NET MVC 3

なぜですか?私はここで何か悪いことをしていますか?

お知らせください。

ありがとう!!!!

+0

モデルをコントローラに戻します。 –

+0

Grid Controllerからページに何かを表示しようとしています。だから私はViewDataで何かを設定しているので、そのページに表示することができます。これは動作していません。 –

答えて

1

1つのビューに2つのコントローラを使用すると、no-noのビットが1つだけ表示されます。

ViewModelsを調べ、必要なすべてのデータをビューに渡します。グリッド用のPartialViewを作成し、必要なモデルをパーシャルビューに渡すこともできます。 ViewModelが機能しないときは、ViewData/ViewBagを最後の手段と考えてください。

+0

次に、なぜ2つのコントローラについて質問していますか? –

+0

これは私のページ全体の様子です.3テキストボックス、1ファイル入力、1 Submit Btn、1 Telerikグリッド。テキストボックスにユーザー入力値を入力し、インポートするファイルを1つ選択します。 Submitボタンは、これら4つのものをとり、ファイルを読み取り、4つのパラメータでWCFサービスを呼び出します。 (TXT1、TXT2、TXT3、FILDATA)。 WCFがXMLファイルを返します。私はディスクの一時的な場所に保存します。これは、1つのコントローライベントですべて発生しています。 Gridイベントが呼び出され、ファイルが解析され、結果がグリッドに表示されます。ここで私は、ViewDataにいくつかの値を入れて、ページにそのメッセージを表示したいと考えています。 –

0

同じビューを表示するために2つのコントローラを別々に使用しようとしていますか?もしそうなら、おそらく、 "グリッド"のビューロジックを部分ビューに分割して、それを主ビュー内でレンダリングすることを検討してください。

「ViewData」を2回述べたので、検討する別の項目はViewModel Patternの実装です。 Viewdataディクショナリのアプローチは、迅速かつ簡単に実装することができます。しかし、タイプセーフではなく、タイプミスによるエラーはコンパイル時には捕捉されません。