ASP.NET MVC Ajax /部分视图和DRY

时间:2010-09-10 12:27:38

标签: asp.net-mvc dry

是否有一种良好的基于​​约定的方法来避免重复代码,例如我的控制器操作方法中的以下内容?:

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

1 个答案:

答案 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类型上执行相同的操作。