问题描述
区域(Area)早在ASP.NET MVC的应用程序开发中就已经存在了,使用区域可以让我们在管理应用程序的结构目录时更加方便和清晰。比如,项目中需要使用一个单独的管理员的目录(Admin),在这个目录中还可能创建若干子目录以及对应的视图等等,ASP.NET MVC中的区域便可支持这种结构。
在ASP.NET Core中是否也有类似的区域设置呢,如果有又应该如何使用呢?
方案一
首先,答案是肯定的,ASP.NET Core应用程序是支持区域(Area)的。
ASP.NET Core应用程序要使用区域,必须得先添加区域的路由规则。在启动类Startup.cs
文件中的路由配置中添加支持区域的路由,如下:
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
其中routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
即为支持区域的路由规则。
然后,在ASP.NET Core项目的根目录下创建一个名为 Area 的文件夹,再在Area目录中创建你需要的区域目录,比如问题中的Admin
。
区域文件夹创建完成后,便可使用区域来拆分项目的业务了。
需要注意的是: ASP.NET Core区域的目录结构需与非区域项目的结构保持一致,即区域中的控制器放在[Controllers]文件夹中,视图文件放在[Views]文件夹中。
假如在Admin区域的控制器中创建了一个名为AdminController
的控制器,则我们可以使用Area
属性类来指定这个控制器的区域,示例代码如下:
[Area("Admin")]
[Route("admin/[controller]")]
public class AdminController : Controller
{
public AdminController()
{
}
public IActionResult Index()
{
return View();
}
}
然后在Admin区域的视图文件夹[Views]中创建对应的视图文件即可。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册