我可以将自定义类设置为ASP.NET MVC3中控制器的默认基类吗?

时间:2011-02-15 14:50:27

标签: asp.net-mvc asp.net-mvc-3 default code-structure

我想从我自己编写的自定义基类继承所有控制器。我可以在每次添加新控制器时更改该行,但如果我可以指定在那里设置的默认值,那么它会更好。这样我就不用担心会忘记这一点,而其他稍后加入项目的人会有更轻松的时间。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:3)

您可以自定义在调用Add Controller操作时使用的T4模板。基本上你必须将模板从C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddController\Controller.tt复制到项目文件中的'〜\ CodeTemplates \ AddController \ Controller.tt`。

更多可用信息here(向下滚动到“添加和自定义脚手架模板”)

答案 1 :(得分:0)

是的,这是一件容易的事。首先创建一个名为“BaseController”的类,例如,它继承自Controller。然后所有控制器都将从BaseController继承。

编辑:我认为使用T4模板生成你的服装控制器(称为BaseController或者控制器 - 你喜欢哪个)也可以。我见过Scot Hanselman在他的一次演讲中做了类似的事情。

答案 2 :(得分:0)

您可以使用命名空间来执行此操作:在与控制器相同的命名空间中创建一个名为Controller的类,例如:

namespace UI.Controllers
{
    public class Controller : System.Web.Mvc.Controller
    {
        //Code here
    }
}

然后对Controller的标准非限定引用将引用您的基类而不是System.Web.Mvc.Controller。

虽然可能会让人感到困惑 - 我宁愿只记得引用基类。