ASP.NET MVC自定义控制器类

时间:2012-07-11 14:16:59

标签: asp.net-mvc asp.net-mvc-3

在ASP.NET MVC中,我们如何在不使用" controller"的情况下创建控制器类。后缀?我无法在网上找到解决方案。 MSDN文档说控制器类名必须以" controller"。

结尾

有些专家可以帮助我吗?

谢谢。

杰里

1 个答案:

答案 0 :(得分:2)

您必须通过继承DefaultControllerFactory并覆盖GetControllerType方法来使用自定义控制器工厂。

// instantiate controllers that doesn't have "Controller" suffix.
public class CustomControllerFactory: DefaultControllerFactory
{ 
    protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName)
    {
        var controllersNs = "MvcApp.Controllers";
        return Type.GetType(string.Format("{0}.{1}", controllersNs, controllerName));
    }
}

您必须在Global.asax.cs中注册此控制器工厂。

ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());

重要DefaultControllerFactory通过缓存类型和其他内容来提高性能,您必须查看source code以获得更好的主意。