2010-09-10 7 views
1

est-il un bon moyen fondée sur les conventions à éviter le code répétitif comme suit dans mes méthodes d'action du contrôleur ?:ASP.NET MVC Ajax/vues partielles et DRY

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

Répondre

1

Si tous vos contrôleurs héritent d'un classe de base que vous contrôlez, vous pouvez ajouter ce peu de logique dans une fonction là-bas.

Quelque chose comme:

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"); 
    } 
} 

Sinon, vous pouvez envisager d'utiliser une méthode d'extension pour faire la même chose sur le type Controller.