【发布时间】:2018-06-19 07:09:13
【问题描述】:
我正在使用 MVC5 制作网站。
我正在使用脚手架从我的模型类生成我的控制器。每当它创建控制器的脚手架时,数据库连接和模型操作都会发生在控制器类中(如下所示)。通过查看thread,我可以看出大多数人都同意这应该发生在模型类中。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Username")] User user)
{
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
我应该让它看起来像这样,而不是让控制器执行此操作?:
用户控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Username")] User user)
{
if (ModelState.IsValid)
{
UserModel userModel = new userModel();
userModel.editUser(user);
return RedirectToAction("Index");
}
return View(user);
}
用户模型
public void editUser(User user){
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
要指定“db”是什么,它将是对我的 db 上下文的引用。
【问题讨论】:
-
如果有的话,应该是
public static void Edit(User user)或public void Save(DatabaseContext db)。 -
您找到了一篇帖子,其中一些用户发表了他们的意见,我还可以找到几十个帖子说这不是一个好主意
-
@StephenMuecke 线程中的几乎所有人都声称应该将其分开。你能给我举个例子,为什么这是个坏主意吗?
-
太多人使用 MVC 作为整个应用程序的模式。我认为 MVC 更像是您的表示 (GUI) 层的细分。 MVC 中的模型通常是 ViewModel。
-
您在征求与 SO 无关的意见。
标签: c# asp.net-mvc scaffolding