MVC アプリケーションのどこにマスター ページのコードを配置するか?

StackOverflow https://stackoverflow.com/questions/60516

  •  09-06-2019
  •  | 
  •  

質問

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

そこで私の質問は、これらのマスター ページ データベース呼び出しコードをどこに配置すればよいでしょうか?

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

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

資料の量が非常に少ないのですが…私は MVC 自体の概念を含め、これらすべてについて非常に初心者なので、これに関するヒント/テクニックを共有してください。

役に立ちましたか?

解決

これを行う 1 つの方法は、マスターページ ビューに ViewData のフックを配置し、 BaseController を定義することです。必要なすべての DB 呼び出しを実行するコントローラー (または複数の基本クラス)。

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

これがお役に立てば幸いです!

よろしく

他のヒント

素晴らしい質問です。いくつかのオプションが利用可能です。

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

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

厳密に型指定されたビュー データを気にしない場合は、すべてのマスター ページ データを 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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top