如何覆盖ASP.NET Core的控制器命名约定?

时间:2016-12-28 11:37:23

标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc

我正在使用ASP.NET Core。惯例是路由系统将FooController类视为名为Foo的控制器。

我需要覆盖这个约定。我想做这样的事情:

[ControllerName("Bar")]
public class SomeArbitraryName : Controller {
}

或者像这样:

public class SomeArbitraryName : Controller("Bar") {
}

这有可能吗?

编辑:没有关联"重复"问题不适用于ASP.NET Core!

2 个答案:

答案 0 :(得分:3)

Asp.Net Core中仍然存在属性路由

[Route("Bar")]
public class SomeArbitraryName : Controller
{
    // ...
}

请参阅Documentation: Routing to Controller Actions - Attribute Routing

答案 1 :(得分:0)

您可以在应用程序初始化步骤中的某个位置实现自己的System.Web.Mvc.IControllerFactory并执行ControllerBuilder.Current.SetControllerFactory(new MyImpl())

编辑:此建议适用于ASP.NET MVC 5,而Core可能具有类似

的不同接口