从mvc中的url隐藏区域名称,在区域和外部区域中具有重复的控制器名称

时间:2016-05-03 12:59:11

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

我们在ASP.NET MVC5中使用AttributeRouting来定义路径。

现在我们有“管理员”区域,一个是外部区域,即用于前端站点

我不想在路线中使用/ admin。

我的问题是,如何在网址中隐藏区域,以便我可以调用

mywebsite.com/home/1 

而不是

mywebsite.com/Admin/Home/1

我找到了解决方法但是如果我在区域和外部区域有控制器名称,即“Home”,那么它将无法工作,因为它会使路由混乱。

因此,在区域和外部使用相同的控制器名称,如何在Url中隐藏我的区域名称。

主要Routeconfig.cs

routes.MapRoute(
      "Default",
      "{controller}/{action}/{id}",
      new { controller = "Home", action = "Index", id = "" },
      new[] { "application.Controllers" }
    );

AdminAreaRegistartion.cs

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

区/管理员/控制器

[RouteArea("Admin")]
[RoutePrefix("")]
public class HomeController : Controller
{
    //...
}

0 个答案:

没有答案