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
.