在ASP.NET Core 3.1中,路由到子文件夹中的控制器可以通过配置路由来实现。以下是实现这一功能的基础概念、优势、类型、应用场景以及解决问题的方法。
ASP.NET Core的路由系统允许你定义URL模式与控制器和动作方法的映射关系。默认情况下,路由配置在Startup.cs
文件中的Configure
方法中进行。
假设你有一个项目结构如下:
Controllers
├── HomeController.cs
└── Admin
└── DashboardController.cs
你希望访问/admin/dashboard
时路由到DashboardController
。
在Startup.cs
中配置路由:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "admin",
pattern: "admin/{controller=Dashboard}/{action=Index}/{id?}");
});
}
在DashboardController
中使用属性路由:
namespace YourNamespace.Controllers.Admin
{
[Route("admin/[controller]")]
public class DashboardController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "admin",
pattern: "admin/{controller=Dashboard}/{action=Index}/{id?}");
});
}
namespace YourNamespace.Controllers.Admin
{
[Route("admin/[controller]")]
public class DashboardController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
}
}
通过以上配置,你可以成功地将请求路由到子文件夹中的控制器。
领取专属 10元无门槛券
手把手带您无忧上云