ASP.NET MVC通用控制器的目的是什么?

时间:2013-11-15 12:15:03

标签: c# asp.net-mvc

我是asp.net mvc的新手。我听到ASP.NET MVC generic controller这个词,任何人都能轻易解释它是什么吗?我之前使用过默认控制器,但现在我希望能够可视化ASP.NET MVC通用控制器的用途。如果有人能够解释开发人员必须考虑使用ASP.NET MVC通用控制器的情况,那将非常有用。将非常感谢有关如何实现它的概念和代码。感谢

1 个答案:

答案 0 :(得分:9)

您通常会创建一个泛型类来抽象出可以对一系列类型执行的操作,例如包含ID的Entity Framework模型。在这种情况下,您可以将所有重复的代码移动到基类中。

对于MVC控制器,通用基本控制器可能如下所示:

public abstract class GenericController<T> 
    where T : class
{
    public virtual ActionResult Details(int id)
    {
        var model = _repository.Set<T>().Find(id);
        return View(model);
    }
}

这样的实现:

public class FooController : GenericController<Foo>
{

}

现在当有人请求/Foo/Details/42时,权限会从_repository的{​​{1}}中提取,而无需在Set<Foo>()中为其写任何内容。

通过这种方式,您可以创建一个基本的“CRUD”控制器,通过新模型的创建,读取,更新和删除操作,您可以轻松扩展应用程序。