1

在 ASP.NET MVC 中,如何在不使用“控制器”后缀的情况下制作控制器类?我在网上找不到解决方案。MSDN 文档说控制器类名必须以“控制器”结尾。

有高手能帮帮我吗?

谢谢你。

杰瑞

4

1 回答 1

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通过缓存类型和其他内容来提高性能,您必须查看源代码以获得更好的想法。

于 2012-07-11T15:45:29.697 回答