是否有一种良好的基于约定的方法来避免重复代码,例如我的控制器操作方法中的以下内容?:
if (Request.IsAjaxRequest())
{
return PartialView("EmployeeList", _service.GetEmployees());
}
return RedirectToAction("Index");
答案 0 :(得分:1)
如果所有控制器都从您控制的基类继承,您可以在那里的函数中添加该位逻辑。
类似的东西:
internal class MyBaseController : Controller
{
protected ActionResult PartialOrRedirect<T>(string partialName, Func<T> getModel, string actionName)
{
if (Request.IsAjaxRequest())
{
return PartialView(partialName, getModel());
}
return RedirectToAction(actionName);
}
}
public class MyDerrivedController : MyBaseController
{
public ActionResult Employees()
{
return PartialOrRedirect(
"EmployeeList",
() => _service.GetEmployees(),
"Index");
}
}
否则,您可以考虑使用扩展方法在Controller
类型上执行相同的操作。