我的新区域有这个文件夹结构

c# - ASP.NET Core 2.1 区域路由不起作用-LMLPHP

这是我在启动时设置它的方式:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");

    routes.MapRoute(
      name: "areas",
      template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
});

这就是我创建基本 Controller 的方式
namespace App.Areas.Applications.Controllers
{
    [Area("Applications")]
    [Authorize]
    public abstract class ApplicationsBaseController : Controller
    {

    }
}

然后我的 ApplicationsController 继承了 BaseController

但是,当我设置这样的链接时
<li class="nav-item"><a asp-area="Applications" asp-controller="Applications" asp-action="Index" class="nav-link">Applications</a></li>

这是显示在我的 url https://localhost:44338/Applications?area=Applications 中的链接,但我无法找到页面。

设置我的区域时我错过了什么?

编辑:

当我在 [Area("Applications")] 之后添加 [Route("Applications/[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?}");
});

关于c# - ASP.NET Core 2.1 区域路由不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52574808/

10-13 09:15