在ASP.NET Core MVC 3.1中使用基于区域的路由,您可以按照以下步骤进行操作:
AreaRegistration
类。using Microsoft.AspNetCore.Mvc;
namespace YourProject.Areas.Admin
{
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName => "Admin";
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Admin_default",
template: "Admin/{controller=Home}/{action=Index}/{id?}");
}
}
}
ConfigureServices
方法中添加以下代码,以启用区域路由。services.AddControllersWithViews();
services.AddRazorPages();
services.Configure(options =>
{
options.ConstraintMap.Add("area", typeof(AreaRouteConstraint));
});
Configure
方法中,注册您的区域路由。app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
using Microsoft.AspNetCore.Mvc;
namespace YourProject.Areas.Admin.Controllers
{
[Area("Admin")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
现在,您可以在浏览器中访问"Admin/Home/Index"来访问"Admin"区域中的"Home"控制器的"Index"动作。
请注意,以上代码示例假定您的解决方案已经包含了"Razor Pages"和"Controllers With Views"的支持。如果您的解决方案中没有这些支持,您需要在"Startup.cs"文件中的ConfigureServices
方法中添加相应的服务注册代码。