Rap*_*eão 1 c# asp.net asp.net-mvc asp.net-web-api
我开始在asp.NET MVC中开发.我需要将Web API与View项目分开,我希望WebAPI控制器具有来自View项目的不同命名约定,以便从用于视图的控制器轻松识别什么是webapi控制器.在这两个项目中,默认约定是name +'Controller'.如果有一种方法可以在webapi中更改它,例如,而不是'WebAPiController',我希望名称约定为'WebAPICtrl'ou'WebAPiService'.
我发现它关闭的问题是: 在ASP.NET MVC中更改控制器名称约定
如何在Asp.net mvc 5中存档此要求?
在Global.asax中的Application_Start()方法中,您需要将ControllerBuilder.Current替换为控制器工厂的自定义实现.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您需要一个类继承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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |