我想创建如下结构的区域
- 领域
- 管理员
- 前端
- Controller
- HomeController.cs
- 浏览量
- Controller
- 应用程序接口(interface)
- Controller
- HomeController.cs
- Controller
- 前端
- 管理员
启动类
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我已经将 [Area("Admin/FrontEnd")] 标记为 HomeController 但它不起作用。它返回以下错误
处理请求时发生未处理的异常。
InvalidOperationException:未找到 View “关于”。搜索了以下位置: /Areas/Admin/Views/Home/About.cshtml
我该怎么办?
项目
最佳答案
您可以在 RazorViewEngineOptions
上使用 AreaViewLocationFormats
来指示您希望 MVC 查找 View 的所有路径。
services.Configure<RazorViewEngineOptions>(o =>
{
o.AreaViewLocationFormats.Insert(0, "/Areas/{2}/FrontEnd/Views/Shared/{0}.cshtml");
o.AreaViewLocationFormats.Insert(0, "/Areas/{2}/FrontEnd/Views/{1}/{0}.cshtml");
});
您可以在此处阅读有关 AreaViewLocationFormats
的详细文档:https://github.com/aspnet/Mvc/blob/1.0.0/src/Microsoft.AspNetCore.Mvc.Razor/RazorViewEngineOptions.cs#L92
您也可以将 Controller 装饰成 [Area("Admin")]
关于ASP.Net Core 嵌套区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909006/