次の例を使用して、asp.net MVC のベスト プラクティスとパターンもお願いします。
私はプロジェクトを持っています。これはそのアーキテクチャです:
- モデル
- コントローラー
- ビュー
- ツール
modelsフォルダーには、個別のクラス フィールドにすべての ViewModel があります。すべてのテーブル宣言 (オブジェクト) を 1 つのファイル (AccountModels.cs または ForumModels.cs) に入れました。EF コンテキスト (MyAppContext.cs) 用に別のファイルがあります。
コントローラー- ここには、コントローラー クラスしかありません。しかし、おそらくコードの一部は、より良い例であり、何を改善できるかを提案するでしょう:
private AppContext db = new AppContext ();
[HttpPost]
[Authorize]
public ActionResult AddGun(GunModel model)
{
if (ModelState.IsValid)
{
Gun gunToAdd = new Gun
{
Tilte = model.Tilte,
AuthorID = UserTools.getUser(User.Identity.Name).UserId,
AddDate = DateTime.UtcNow,
Content = model.Content,
CategoryID = model.CategoryID,
CategoryName = GunsTools.getCategoryName(model.CategoryID)
};
db.Guns.Add(gunToAdd);
db.SaveChanges();
return RedirectToAction("Details", new { ID = gunToAdd.ID });
}
return RedirectToAction("Index");
}
これは、AddGun アクションを持つコントローラーの一部です。その他の ActionResults は似ています - 一般に、db コンテキストでラムダ式を使用して値などを取得します。
ビュー- 別のフォルダー内のビュー。部分ビューの場合、特別なプレフィックスを設定します (例: _NavigationPartial.cshtml または _CalculatorPartial.cshtml)。ここで改善すべき点はありますか?もちろん、ビューはモデルではなくビューモデルを使用します。
そして少なくとも - Tools。コードの繰り返しを防ぐために、いくつかのクラスとメソッドをここに配置しました。GetUser(..) や GetCategoryName(..) など、データベースからいくつかのオブジェクトまたは単なる文字列を返すいくつかのメソッドを次に示します。それはまったく良い習慣ですか?
多くの若い MVC 開発者は同じプロジェクト アーキテクチャを持っていると思います (私は個人的にいくつかの企業でそれを見ました)。彼らの多くは、より良いプログラマーになるために自分のプロジェクトの何かを改善したいと考えているかもしれません。
よろしく