2008-09-13 9 views
8

私はASP.NET MVCアプリケーションで少数(2または3)のマスターページを使用していますが、それぞれデータベースの情報ビットを表示する必要があります。スポンサーのリスト、現在の資金状況などマスターページのコードをMVCアプリケーションに配置する場所は?

私の質問は、これらのマスターページデータベース呼び出しコードはどこに置くべきですか?

通常、これらは独自のコントローラークラスに移行する必要がありますか?しかし、それはMVCフレームワークによって提供される通常のルーティングフレームワークから外れているため、手動で(ViewDatasを渡すなど)それらを結線しなければならないことを意味します。

ViewDataを渡す/手動でマスターページへの呼び出しを呼び出したり、フレームワークをサブクラス化したりすることなく、これをきれいにする方法はありますか?

ドキュメンテーションの量は非常に少ないです...そして、私はMVCのコンセプトを含めてこれにすべて新しいので、これに関するあなたのヒント/テクニックを教えてください。

答えて

5

これを行う1つの方法は、ViewDataのフックをmasterpageビューに入れ、必要なすべてのdb呼び出しを行うBaseController:Controller(または複数の基本クラス)を定義することです。

あなたがしたいことは、thisの記事で説明したのと全く同じことです。

こちらがお役に立てば幸いです。

よろしく

0

あなたは強く型付けされたビューのデータを気にしない場合は、ViewDataをのための共通の基底クラス内のすべてのマスターページのデータを置くことができます。このデータは、基本クラスのコンストラクタで設定できます。追加データを必要とするすべてのビューには、この基本クラスを継承する厳密に型指定されたビューデータが必要です。明示的なViewDataをすることなく、あなたのコントローラで表示()の呼び出しを許可するに

あなたControllerBaseでビューを上書きすることができます。

protected override ViewResult View(string viewName, string masterName, object model) 
{ 
    if (model == null) 
    { 
     model = new ViewDataBase(); 
    } 
    return base.View(viewName, masterName, model); 
} 
+0

代わりに、BaseViewDataを呼び出すことができます:-) – chakrit

1

偉大な質問を。利用できるオプションがいくつかあります。

  1. jQueryを使用して必要なデータを取得し、jQueryを使用してフィールドにデータを取り込むjQueryの呼び出しがあります。
  2. 2番目の方法は、コントローラへの独自の呼び出しによって情報を入力するユーザーコントロールを作成することです。

私は最良の選択は、読み込む必要のあるデータを持つマスターページの領域のコントロールを作成することだと思います。したがって、厳密にデザイン要素を含むようにあなたのmasterpageを残してください。がんばろう。

関連する問題