在asp.net core 2.2中,一个使用区域,控制器和视图的典型Web应用程序包含以下内容:
区域文件夹结构。
装饰有[Area]属性的控制器,用于将控制器与区域相关联
[Area("Products")]
public class ProductsController : Controller
{
}
已将区域路由添加到启动
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
以上配置适用于
~/products/search
~/services/billing
...其他区域也是如此。
上述路由配置负责所有区域。
那么创建命名路由有什么用。 (如下所示)我们将在哪里使用它?每次添加/删除区域都会增加路由更新的开销吗?
app.UseMvc(routes =>
{
routes.MapAreaRoute(
name: "MyAreaProducts",
areaName:"Products",
template: "Products/{controller=Home}/{action=Index}/{id?}");
routes.MapAreaRoute(
name: "MyAreaServices",
areaName: "Services",
template: "Services/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});