在ASP.NET MVC5中,可以通过自定义区域部分覆盖路由操作来实现。下面是一个包含代码示例的解决方法:
首先,在应用程序中创建一个区域。假设我们创建了名为“Admin”的区域。
在Admin区域文件夹中创建一个名为“AdminAreaRegistration.cs”的类,继承自AreaRegistration
类,并重写RegisterArea
方法。
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
// 在这里注册Admin区域的路由规则
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
RouteConfig.cs
文件中,移除默认的区域路由规则,并添加一个名为“Default”(或者其他你想要的名字)的路由规则。public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// 移除默认的区域路由规则
routes.IgnoreRoute("{area}/{resource}.axd/{*pathInfo}");
// 添加一个名为"Default"的路由规则
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "YourApplication.Controllers" }
);
}
}
Global.asax.cs
文件的Application_Start
方法中注册Admin区域。protected void Application_Start()
{
// ...
// 注册Admin区域
AreaRegistration.RegisterAllAreas();
// ...
}
现在,你就可以在Admin区域中创建控制器和视图,并通过以下URL访问它们:
http://yourdomain.com/Admin
:访问Admin区域的默认首页http://yourdomain.com/Admin/ControllerName/ActionName
:访问Admin区域中的控制器和动作注意:要确保在Admin区域中使用的控制器和视图的命名空间是正确的,以便它们被正确地加载。