【发布时间】:2017-01-04 07:01:53
【问题描述】:
我正在寻找一种方法来制作可以被多个控制器继承的通用操作方法,因此我不必在 MVC 中为不同的控制器和表重复相同的方法。我认为这适用于我必须经常为多个课程做的许多 CRUD 工作。
例如,这是我要复制的代码:
public ActionResult ToggleQC(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
BACTERIA_EVW bacteria = db.BACTERIA_EVW.Find(id);
if (bacteria == null)
{
return HttpNotFound();
}
//add/remove QC status (switch to whichever one it isn't right now)
if (bacteria.QCOn == null) //if it hasn't been QCed
{
bacteria.QCOn = DateTime.Now;
bacteria.QCBy = User.Identity.Name;
}
else //if it has been QCed and they are undoing it
{
bacteria.QCBy = null;
bacteria.QCOn = null;
}
//save changes
db.Entry(bacteria).State = EntityState.Modified;
db.SaveChanges();
//return updated QC status partial
return PartialView("_QCStatus", bacteria);
}
我需要在化学控制器中做同样的事情,但我不想重复整个事情而只改变一个部分。是否可以将模型类型作为参数传递给方法,以替换BACTERIA_EVW?我该怎么做?
如果这是非常基本的事情,我深表歉意;我可能不知道要寻找的正确条款。我已经搜索了通用操作方法,但我没有找到任何答案,尽管有一些关于通用控制器的东西 - 我是否需要以某种方式创建一个通用控制器类来包含这样的方法?
非常感谢。
【问题讨论】:
-
您可能需要一个通用方法msdn.microsoft.com/en-us/library/twcad0zb.aspx 从您的控制器调用它
-
谷歌“抽象方法”
-
@Shekhar 需要不仅仅是“阅读泛型”来处理“db.BACTERIA_EVW.Find”或保存更新......
标签: c# asp.net asp.net-mvc