根据this ASP.NET MVC article我创建了一个Unity of Work类和一个通用存储库。
我有很多模型类以及总是相同的控制器操作,如创建,更新,删除等。因此,在每个控制器中,Create操作看起来像
public ActionResult Create(
[Bind(Include = "CourseID,Title,Credits,DepartmentID")]
Course course)
{
try
{
if (ModelState.IsValid)
{
unitOfWork.CourseRepository.Insert(course);
unitOfWork.Save();
return RedirectToAction("Index");
}
}
catch (DataException)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
return View(course);
}
所以我的问题是:是否可以创建例如a"全球" ActionResult"创建"在BaseController中,根据实体使用正确的UoW存储库(或通过工作类Unity的相关存储库)?
在特定的控制器操作中,我只想将此全局方法称为:
return new BaseController().Create(entity)
答案 0 :(得分:0)
通常BaseController是一个抽象类,不应该用它来创建一个实例。我认为您应该运行Create from specific Controller,如下所示:
return new CourseController(new CourseRepository()).Create(course);
BaseController应该实现像IRepository.Create这样的接口,并且在特定控制器的初始化时你可以通过正确的存储库 - 也许在IoC的帮助下你可以请求所有Dependencies注入的CourseController。
我希望这会有所帮助。