这个问题涉及主要是良好的设计。
假设我有这样一个删除页面控制器动作,可以在同一个控制器的两个独立的观点来调用。 假设删除逻辑是不包含在行动本身,而是一些有条件的检查和调用正确的业务逻辑等等,它没有意义的重复删除操作的结构时,我可以代替有私人方法返回一个ActionResult这是我在这会导致删除这两个操作调用。 我的问题是在哪里是把这样的可重复使用的操作方法最好的地方? 现在,我只是将它们标记私下和控制器类的区域坚持他们,但也许是一个密封的内部类将更有意义,这样的方法 - 或其他地方完全。
思考?
public ActionResult EditPage(int id, FormCollection formCollection)
{
var page = _pagesRepository.GetPage(id);
if (page == null)
return View("NotFound");
if (page.IsProtected)
return View("IllegalOperation");
if (formCollection["btnSave"] != null)
{
//...
}
else if (formCollection["btnDelete"] != null)
{
return DeletePage(page);
}
return RedirectToAction("Index");
}
public ActionResult DeletePage(int id)
{
var page = _pagesRepository.GetPage(id);
if (page == null)
return View("NotFound");
return DeletePage(page);
}
// Reusable Action
private RedirectToRouteResult DeletePage(Page page)
{
if(page != null && !page.IsProtected)
{
_pagesRepository.Delete(page);
_pagesRepository.Save();
FlashMessage(string.Format(PageForms.PageDeleted, page.Name), MessageType.Success);
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}