私はmvc3でアプリケーションを作成しており、すべてのアプリケーション要求に必要なデータベースデータを処理する方法について疑問を抱いています。そのうちのいくつかはセッションに依存し、それらのいくつかは基本的にすべてのデータがデータベースにあります。私は自分のアプリケーションで行うとベストプラクティスであると考えて何がベストプラクティスMvc3 - (ほぼ)すべての要求に必要なデータを処理するベストプラクティス?
3
A
答えて
3
を知る
などはコントローラのコンストラクタにViewBagにあなたの共通のデータをロードすることです。
すべてのプロジェクトで、Controllerを拡張するDefaultController抽象クラスがあります。したがって、プロジェクト内のすべてのコントローラーは、コントローラーではなくDefaultControllerから継承する必要があります。そのクラスのコンストラクタで、私はそうのように、プロジェクト全体に共通するすべてのデータをロードします。
// DefaultController.cs
public abstract class DefaultController : Controller
{
protected IRepository Repo { get; private set; }
protected DefaultController(IRepository repo)
{
Repo = repo;
ViewBag.CurrentUser = GetLoggedInUser();
}
protected User GetLoggedInUser()
{
// your logic for retrieving the data here
}
}
// HomeController.cs
public class HomeController : DefaultController
{
public HomeController(IRepository repo) : base(repo)
{
}
// ... your action methods
}
そのように、あなたは常にあなたのビューで利用可能なユーザーでログインしています。
0
ベースのViewModelクラスを使用することをお勧めします。 プロパティ/関数を持つ基本クラスは、いつでも利用できるはずです。
3
私は@rdumontと同じことをしますが、1つ例外があります。私が使用するすべての共通プロパティを定義するために使用するCommonViewModel
を作成します。
public class CommonViewModel
{
public string UserName {get;set;}
public string Extension {get;set; }
}
はベースコントローラでプロパティを宣言します。
public abstract class BaseController : Controller
{
protected CommonViewModel Commons { get; private set; }
protected virtual void OnResultExecuting(ResultExecutingContext filterContext)
{
ViewBag.Commons = Commons;
}
}
そうすることによって、私はすべてのものがほとんど型付け得ます。私がする必要があるキャストはViewBag.Commons
をCommonViewModel
にキャストすることだけです。
3
ベストはViewBagをまったく避けることです。
は、その目的のためにHtml.RenderAction()
を使用する方法詳細は、この回答を参照してください。
関連する問題
- 1. セカンダリページ要求を処理するためのベストプラクティス
- 2. Rxjava2 - マルチレトロフィット要求とすべての例外処理
- 3. djangoインクルージョンテンプレートタグの処理要求
- 4. tsserver:エラー処理要求(ノープロジェクト)
- 5. 処理エラーオーバーループ配列要求
- 6. Hello Worldラックミドルウェア3:すべての要求のボディを処理する方法
- 7. ajax投稿要求symfony2コントローラのデータを処理します
- 8. ServletContainerが要求を処理します
- 9. この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました
- 10. 一般的なビュー要求処理Django
- 11. ほぼ静的なサイトからのクロスドメイン要求の呼び出し
- 12. すべてのページビューで必要なアプリケーション全体のデータを処理するための正しい方法
- 13. Gunicorn nginxのエラー処理要求に
- 14. iOS:音声処理に必要なスレッディングソリューション
- 15. curlを使用して要求のJSONデータを処理する投稿
- 16. Grpc:1つのサーバースレッドだけがすべての要求を処理します
- 17. asyntaskからデータを処理する方法 - 必要pojo
- 18. ファイルのすべての要求を、PDFを処理するための単純なフォルダ名にルーティングします。
- 19. RestAPIへのデータ要求時にインターネット接続を処理する方法
- 20. IIS統合要求処理パイプライン - 変更要求
- 21. Web APIで無効なJSONP要求を処理する
- 22. 簡単なhttp投稿要求を処理するGAE
- 23. ファイアベースクラウド機能:継続的な要求を処理する方法
- 24. HTML POST要求がすべてのデータを送信しない
- 25. すべての要求にすべての依存関係をロードする必要がありますか?
- 26. サーバー側のWeb要求の処理
- 27. httpサーバのクライアント要求の処理
- 28. 要求を処理中にボタンを無効にする
- 29. ドメインエンティティに必要なプロパティを処理する方法は?
- 30. 要求caretRectForPosition:NSTextStorageは、未処理の変更
あなたはdownvotingている返信を投稿してください... – Rhapsody