我还会使用以下示例询问 asp.net MVC 的最佳实践和模式:
我有一个项目。这是它的架构:
- 楷模
- 控制器
- 意见
- 工具
在模型文件夹中,我将每个 ViewModel 都放在单独的类字段中。我将所有表声明(对象)放在一个文件(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 Action 控制器的一部分。其他 ActionResults 是相似的 - 通常我在我的数据库上下文中使用 lambda 表达式来获取值等。
视图- 单独文件夹中的视图,对于部分视图,我设置了特殊前缀(例如 - _NavigationPartial.cshtml 或 _CalculatorPartial.cshtml)。这里有什么需要改进的地方吗?当然,视图使用 ViewModels,而不是 Models。
至少 -工具。我在这里放了一些类和方法来防止重复代码。这是一些从数据库返回一些对象或字符串的方法,例如 GetUser(..) 或 GetCategoryName(..)。这是一个好习惯吗?
我认为许多年轻的 MVC 开发人员都有相同的项目架构(我个人在几家公司看到过),他们中的许多人可能还想在他们的项目中改进一些东西以成为更好的程序员。
问候