首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改Asp.NET MVC中的控制器命名约定?

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

Stack Overflow用户
提问于 2015-06-01 18:22:30
回答 1查看 2K关注 0票数 1

我开始在asp.NET MVC中开发。我需要将WebAPI与视图项目分开,我希望webapi控制器与视图项目有不同的命名约定,以便很容易地识别什么是webapi控制器和什么是视图控制器。在这两个项目中,默认约定是name + 'Controller‘。如果有一种方法在webapi中改变它,例如,而不是“WebAPiController”,我希望名称约定是'WebAPICtrl‘ou 'WebAPiService’。

我发现它很接近的问题是:change controller name convention in ASP.NET MVC

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 19:13:40

在Application_Start()方法中,需要将ControllerBuilder.Current替换为控制器工厂的自定义实现。

代码语言:javascript
复制
 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方法。请查看默认实现,以进一步指导如何做到这一点。看起来会是这样的。

代码语言:javascript
复制
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;

    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30580516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档