说明
最近准备把本站源码从PHP 迁移到 .NET Core。遇到一个首要问题就是本站是分模块开发的,我也想过分成多个项目来做,但又涉及本站的基础框架,必须所有模块都能随着基础升级,我怕麻烦就整合到一起了。
做法
Areas 是 ASP.NET MVC 功能,在官方文档有介绍【Areas in ASP.NET Core】
第一步
在 Startup.cs
中添加配置
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); //
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
第二步
新建文件夹 Areas/Blog/Controllers
新建控制器 HomeController.cs
[Area("Blog")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
文件夹名可以用其他,关键 使用 Area
声明 区域,使路由能指向这里,改了文件夹也要记得改视图的文字
第三步
注册视图位置
services.Configure<RazorViewEngineOptions>(options =>
{
options.AreaViewLocationFormats.Clear();
options.AreaViewLocationFormats.Add("/Categories/{2}/Views/{1}/{0}.cshtml");
options.AreaViewLocationFormats.Add("/Categories/{2}/Views/Shared/{0}.cshtml");
options.AreaViewLocationFormats.Add("/Views/Shared/{0}.cshtml");
});
默认会自动从这些位置找
/Areas/<Area-Name>/Views/<Controller-Name>/<Action-Name>.cshtml
/Areas/<Area-Name>/Views/Shared/<Action-Name>.cshtml
/Views/Shared/<Action-Name>.cshtml
链接生成
HtmlHelper 语法
TagHelper 语法
转载请保留原文链接: https://zodream.cn/blog/id/42.html