2014-09-24 45 views
3

到目前为止,我无法完成此项工作,因此我需要一些帮助。我有一个基本的MVC 5网站,并且我添加了一个叫做Administration的区域。对于我的生活,我无法弄清楚如何正确设置一个区域的默认控制器/动作。MVC5自定义路径以从区域删除控制器名称

在我的网站,我有一个名为管理员的区域,一个名为Admin(用指数法和视图)控制器,这是该地区注册:

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     name: "Admin_base", 
     url: "Admin", 
     defaults: new { area = "Admin", controller = "Admin", action = "Index", id = UrlParameter.Optional } 
    ); 

    context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

第一图路线可以让我浏览到http://myapplication/Admin并显示我设置的视图(管理员/索引),并保持URL为http://myapplication/Admin(这正是我想要的)。现在,通过添加它,它会打破任何进一步路由到控制器。所以当我尝试导航到管理区域中的菜单控制器时,它失败。

有没有正确的方法来做到这一点?

即我需要http://myapplication/Admin/Menu/Create路线正确,也需要保留该区域的默认控制器/行动。

回答

4

你应该只能够将它们组合成一个:

context.MapRoute(
    "Admin_default", 
    "Admin/{controller}/{action}/{id}", 
    defaults: new { area = "Admin", 
        controller = "Admin", 
        action = "Index", 
        id = UrlParameter.Optional } 
); 

通过指定默认值,你应该能够调用/Admin/和参数的其余部分设置为默认值。

+0

非常感谢!我想我早些时候尝试过这个,并且失败了,因为我在某处重用了一个类名,并认为它不起作用。你的答案是完美的,并将它设置为这样。 – Keith 2014-09-24 16:45:22

相关问题