如何更改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中存档此要求?
在全局的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;
}
}