ASP.Net核心嵌套区域

时间:2016-08-12 02:37:48

标签: asp.net asp.net-mvc-4 asp.net-core

我想创建类似以下结构的区域

    • 管理
      • 前端
        • 控制器
          • HomeController.cs
        • 浏览
      • API
        • 控制器
          • HomeController.cs

启动课程

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:找不到视图“关于”。搜索了以下位置: /Areas/Admin/Views/Home/About.cshtml

我该怎么办?

项目

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用AreaViewLocationFormats上的RazorViewEngineOptions来指示您希望MVC查找视图的所有路径。

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

此外,您只需将控制器装饰为[Area("Admin")]

即可
相关问题