如何在MVC 6中全局注册一个区域的所有控制器?

时间:2016-02-04 16:55:25

标签: asp.net-mvc

我有一个名为“Admin”的mvc区域,里面有3个控制器,但可以是5个或更多,对于任何控制器,我必须将[Area(“Admin”)]属性放在控制器类定义之上。

我不想这样做:[区域(“管理员”)]对于此管理区域内的所有控制器,

我可以在mvc 6中注册该区域的所有控制器吗?

1 个答案:

答案 0 :(得分:0)

对于MVC6 ,您需要使用Area属性修饰控制器。如果你不想将它添加到单个控制器,你可以简单地创建一个具有区域装饰的基本调用,并从中继承你的其他控制器。

[Area("Admin")]
public class AdminArea : Controller
{
}

public class OrdersController : AdminArea
{
    public IActionResult Index()
    {
        return View();
    }
}

public class ProductsController : AdminArea
{
    public IActionResult Index()
    {
        return View();
    }
}

MVC 5及以下

您不需要在控制器名称上添加该属性,只需在区域路径注册中指定区域名称即可。

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", controller= "YourDefaultCtrl", id = UrlParameter.Optional }
    );
}