.NET CORE 不正确的控制器路由

.NET CORE incorrect controller routing

我对控制器操作没有 returning 视图有疑问。他们找错了地方。

我是核心新手,但我尝试在线阅读 material,我看到很多 Global.asax.cs、App_Start 文件等,我我在创建的项目中没有看到。

我的问题是:

我创建了一个项目,实现区域如下:

例如,在 CommonController (其中有 'Area("Common") 区域注释) 我有一个 return 查看方法

        public ActionResult RoadMap()
        {
            return View();
        } 

随着link的动作:


    @Html.ActionLink("Roadmap", "RoadMap", "Common")</span>

但是当我访问 link 时,它会尝试查找 "https://localhost:44325/Home/Common/RoadMap"

我的启动代码包含:

    app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                  name: "Account",
                  pattern: "{area:exists}/{controller=Account}/{action}/{id?}");
                endpoints.MapControllerRoute(
                  name: "Common",
                  pattern: "{area:exists}/{controller=Common}/{action}/{id?}");
                endpoints.MapControllerRoute(
                  name: "Email",
                  pattern: "{area:exists}/{controller=Email}/{action}/{id?}");
                endpoints.MapControllerRoute(
                name: "default",
                pattern: "{area=Home}/{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });

我试过在网上寻找资源,但我无所适从。

问题出在此处的操作 link 上。由于你没有提到Area,所以选择了Home的默认路由。

动作link格式应如下所示:

@Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})

在你的情况下应该是:

@Html.ActionLink("Roadmap", "RoadMap", "Common", new {Area = "Common"}, new{})

微软官方文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.viewfeatures.htmlhelper.actionlink?view=aspnetcore-6.0