2010-09-10 206 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類型同樣的事情。