c# - @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 -->
解决方案
它不适用于我的注册/登录/注销链接。不知道我错过了什么。
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?}");
测试结果
推荐阅读
- javascript - 滚动高度大于内部 div 的高度
- css - 垫扩展面板显示禁用指示器并更改动画方向
- asp.net - 通过导航 doPostBack 使用 R 抓取网站以获取数据库定价网站
- oracle - Oracle APEX - 我可以使用什么来查找应用程序中对不存在的页面的引用
- excel - Excel 从 OLAP 筛选器中获取检查值
- excel - Columns Select 选择意外的工作表列
- go - 如何使用 golang 在 git repo 中签出特定的 SHA
- jquery - 使用 jQuery 在 foreach 期间求和元素
- java - JPA - 从一对一关系中获取数据给出 null
- html - 在 flex 容器中用链接包围 img 会导致 img 忽略容器边界