8

ASP.NET MVC アプリケーションでいくつか (2 つまたは 3 つ) のマスター ページを使用しており、データベースからの情報をそれぞれ表示する必要があります。スポンサーのリスト、現在の資金調達状況など。

私の質問は、これらのマスター ページ データベース呼び出しコードをどこに置くべきかということでした。

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

ViewDataのパス/アクション呼び出しをマスターページに手動で配線したり、フレームワークをサブクラス化したりせずに、これをきれいに行う方法はありますか?

ドキュメントの量は非常に少ないです...そして、私はMVC自体の概念を含め、これらすべてに非常に慣れていないので、これに関するヒント/テクニックを共有してください.

4

3 に答える 3

5

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

あなたがしたいことは、この記事で説明されていることとまったく同じです。

これが役立つことを願っています!

よろしく

于 2008-09-13T14:19:14.600 に答える
1

素晴らしい質問です。いくつかのオプションを利用できます。

  1. コントローラーから必要なデータを取得するマスターページで jQuery 呼び出しを行い、jQuery を使用してフィールドに再度入力します。
  2. 2 番目のオプションは、コントローラーを独自に呼び出して情報を入力するユーザー コントロールを作成することです。

最適な選択は、データを入力する必要があるマスターページの領域のコントロールを作成することだと思います。したがって、マスターページにデザイン要素を厳密に含めるようにします。幸運を。

于 2009-02-12T19:56:20.880 に答える
0

厳密に型指定されたビュー データを気にしない場合は、すべてのマスター ページ データを viewData の共通の基本クラスに配置できます。このデータは、基本クラスのコンストラクターで設定できます。追加データを必要とするすべてのビューには、この基本クラスから継承する厳密に型指定されたビューデータが必要になります。

明示的なビューデータなしでコントローラーで View() の呼び出しを許可するには、ControllerBase で View をオーバーライドできます。

protected override ViewResult View(string viewName, string masterName, object model)
{
    if (model == null)
    {
        model = new ViewDataBase();
    }
    return base.View(viewName, masterName, model);
}
于 2008-09-15T20:49:40.010 に答える