.NET Core 3 - 我的 Area 标签没有被识别

.NET Core 3 - my Area tag is not being recognised

希望我遗漏了一些非常明显的东西,但到目前为止,我一直在这一天,但绝对没有运气 - 我已经搜索了 10 多个区域教程,看看我是否能发现任何东西,但是没用。

这是我的文件夹布局:

和端点路由:

(也尝试过):

和控制器:

和视图:

然而,无论我尝试过什么,我总是在 HTML 代中得到这个...

注意表单中的 ?area=Admin。

确定我做的一切都对吗?!我已经在 .NET MVC + .NET Core 中完成了一百万次 2.x

我没能重现错误。但是,我设法创建了有效的示例。创建 MWE

的步骤

tl;dr(如果行不通,请阅读全部:D):

看第4点。似乎您所在区域的根文件夹的指定名称不正确。参见 the docs


1) dotnet new mvc

2) 安装最新的 Aspnetboilerplate dotnet add package Abp.AspNetCore --version 5.0.0

3) 使用 ViewsControllers 创建 Areas\Admin\ 目录(如您的屏幕截图所示)

4) 在Startup.cs:

中设置路由(这可能是关键部分)
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapAreaControllerRoute(
                                  name: "areas",
                                  areaName: "Admin",
                                  pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

5) Areas\Admin\Controllers\BankHolidaysController.cs

using System;
using Abp.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc;

namespace dotnet_mvc_areas_stack.Areas.Admin.Controllers
{
    [Area("Admin")]

    public class BankHolidaysController : AbpController
    {

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Create()
        {
            Console.WriteLine("Creating");
            return View();
        }
    }
}

6) Areas\Views\BankHolidays\Create.cshtml 与 (degenerated :) ) 形式

<p> This is index page of area </p>
<div>
    <form method="post" action="/Admin/BankHolidays/Create">
        <button type="submit">submit</button>
    </form>
</div>

7)旁边Create.cshtml

<div>Created</div>