如何更改Asp. js中的控制器命名约定?净MVC

本文关键字:命名约定 MVC 控制器 何更改 Asp js | 更新日期: 2023-09-27 17:51:21

我开始在asp开发。净MVC。我需要将WebAPI与视图项目分开,我希望WebAPI控制器与视图项目有不同的命名约定,以便轻松识别什么是WebAPI控制器,什么是视图控制器。在这两个项目中,默认约定是name + 'Controller'。如果有办法在webapi中更改它,那就太好了,例如,我希望名称约定不是'WebAPiController',而是'WebAPICtrl' ou 'WebAPiService'。

我发现它接近的问题是:更改ASP中的控制器名称约定。. NET MVC

如何在Asp.net mvc 5中存档此要求?

如何更改Asp. js中的控制器命名约定?净MVC

在全局的Application_Start()方法中。因此,您需要替换ControllerBuilder。当前为控制器工厂的自定义实现。

 public class MvcApplication : HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        var controllerFactory = new CustomControllerFacotry();
        ControllerBuilder.Current.SetControllerFactory(controllerFactory);
    }
}

你需要从DefaultControllerFactory继承一个类,并用你的自定义实现覆盖CreateController方法。请查看默认实现以获得有关如何做到这一点的进一步指导。它看起来像这样。

public class CustomControllerFactory : DefaultControllerFactory
{
     public override IController CreateController(RequestContext requestContext, string controllerName)
    {
        string controllername = requestContext.RouteData.Values["controller"].ToString();       
        Type controllerType = Type.GetType(string.Format("Namespace.{0}",controllername));
        IController controller = Activator.CreateInstance(controllerType) as IController;
        return controller;
    }
}