【问题标题】:ASP.NET Core MVC ActionLinkASP.NET Core MVC 动作链接
【发布时间】:2020-04-23 02:42:18
【问题描述】:

我是 ASP.NET Core 的新手,并在 .NET Core MVC 中构建一个项目。

在我的管理区域中,我有一个控制器 UserRolesController 和 Action CreateRole(正常工作)

在视图中,我向 CreateRole Action 添加了一个超链接

<a class="btn btn-primary" asp-controller="UserRoles" asp-action="CreateRole">Create Role</a>

但运行后链接显示为https://localhost:44332/UserRoles/CreateRole instead of https://localhost:44332/Admin/UserRoles/CreateRole

再次将区域链接到我的主页返回https://localhost:44332/UserRoles?area=Admin而不是https://localhost:44332/Admin/UserRoles

这就是我的路线的配置方式

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

        endpoints.MapAreaControllerRoute(
            "admin",
            "Admin",
            "Admin/{controller=Home}/{action=Index}/{id?}");

        endpoints.MapAreaControllerRoute(
            "client",
            "Client",
            "Client/{controller=Home}/{action=Index}/{id?}");

        endpoints.MapAreaControllerRoute(
            "investor",
            "investor",
            "Investor/{controller=Home}/{action=Index}/{id?}");

        endpoints.MapRazorPages();

我做错了什么。谢谢

【问题讨论】:

    标签: asp.net asp.net-core


    【解决方案1】:

    我认为你需要添加asp-area标签助手:

    <a class="btn btn-primary" asp-area="Products" asp-controller="Admin" asp-action="CreateRole">Create Role</a>
    

       @Html.ActionLink("Admin/UserRoles/CreateRole", "CreateRole", "UserRoles",new { area = "Admin" })
    

    点击Here了解更多信息

    【讨论】:

    【解决方案2】:

    我找到了解决方案。您应该修改顺序以首先制作区域路线:

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

    它对我有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多