首页 > 解决方案 > @Html.ActionLink 未正确链接到帐户/登录、帐户/注册、帐户/注销。不知道我错过了什么

问题描述

我正在尝试使用 @Html.ActionLink 为我的网络应用程序创建导航栏。它适用于我的主页、博客、帖子链接,但不适用于我的注册/登录/注销链接。不知道我错过了什么。我应该做一个辅助方法还是什么?

@using Microsoft.AspNetCore.Identity
@using SpareCodeBlog.Models
@inject SignInManager<BlogUser> SignInManager
@inject UserManager<BlogUser> UserManager

    @{
        ViewData["Title"] = "Details";
        var user = UserManager.GetUserAsync(User).Result;
    }

    @if (SignInManager.IsSignedIn(User))
    {
        <li>
            @Html.ActionLink("Hello " + user.FirstName + user.LastName + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
        </li>
        <li class="nav-item">
            @Html.ActionLink("Logout", "Logout", "Account", Url.Action("Index", "Home", new { area = ""}))
            @*<form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })"><button type="submit">Logout</button></form>*@
        </li>
    }
    else
    {
        <li>
            @Html.ActionLink("Login", "Login", "Account", routeValues: null, new { id = "loginLink", @class = "nav-link mr-0" })
        </li>
        <li>
            @Html.ActionLink("Register", "Register", "Account", routeValues: null, new { id = "registerLink", @class = "nav-link mr-0" })
        </li>
    }
                <div class="collapse navbar-collapse" id="navbar-toggle-pills">
                    <ul class="navbar-nav ml-auto">
                        <li class="nav-item">
                            <!-- Html.ActionLink("Link Text", "Action Method", "Controller", route value, htmlArguments)-->
                            @Html.ActionLink("Home", "Index", "Home", null, new { @class = "nav-link mr-0" })
                        </li>
                        <li class="nav-item">
                            @Html.ActionLink("Blogs", "Index", "Blogs", null, new { @class = "nav-link mr-0" })
                        </li>
                        <li class="nav-item">
                            @Html.ActionLink("Posts", "Index", "Posts", null, new { @class = "nav-link mr-0" })
                        </li>
                        <li class="nav-item">
                            <partial name="_LoginPartial" />
                        </li>
                    </ul><!-- / navbar-nav -->
                </div><!-- / navbar-collapse -->
            </div><!-- / container -->
        </nav><!-- / navbar-pills -->

标签: c#asp.net-core

解决方案


它不适用于我的注册/登录/注销链接。不知道我错过了什么。

Identity Razor 类库公开了该Identity区域的端点,要生成这些 Identity 相关页面的链接,请指定如下所示的区域。

@Html.ActionLink("Register", "Register", "Account", new { area = "Identity" }, new { id = "registerLink", @class = "nav-link mr-0" })

区域路线添加到startup

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

测试结果

在此处输入图像描述


推荐阅读