2010-09-10 70 views
1

是否有一个良好的以公约为基础的方式,以避免重复这样的代码在我的控制器的操作方法?:ASP.NET MVC的Ajax /部分意见和DRY

if (Request.IsAjaxRequest()) 
{ 
    return PartialView("EmployeeList", _service.GetEmployees()); 
} 
return RedirectToAction("Index"); 

回答

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类型同样的事情。