MVC 5区域在Url中隐藏家庭控制器

时间:2016-09-23 18:51:12

标签: asp.net asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing asp.net-mvc-areas

我在MVC 5中有一些区域,每个区域都有自己的HomeController。 所以URL看起来像:

/domain/{area}/{controller}/{action}/{id}
/domain/myarea/home/myaction

是否可以配置路由以隐藏每个区域的家庭控制器名称?所以URL应如下所示: /domain/myarea/myaction - 当然指向家庭控制器。

谢谢, 亚历克斯。

1 个答案:

答案 0 :(得分:0)

您应该能够更新区域注册的路由模式,以删除控制器名称。

例如:

public class EventsAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Events";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Events_default",
            "Events/{action}/{id}",
            new { action = "Index", controller = "Home", id = UrlParameter.Optional },
           new string[] { "MyProject.Areas.Events.Controllers" }
        );
    }
}

现在,请求yourSite/Events/Details/23将在“事件”区域中返回HomeController的“详细信息”操作方法。