Я пишу проект под названием Социальная сеть.Это ASP.NET Core Web Application + шаблон веб-приложения (Model-View-Controller).
Я добавил функциональность, в которой, если пользователь авторизован, то у него будет поле «Выход из системы», если он не зарегистрирован.в - «логин» на странице "_Layout.cshtml"
.Для этого я использовал ViewComponent.
Но маршрутизация не работает должным образом.Когда я нажимаю «Войти», меня перенаправляют на ".../Account/~/Account/Login"
вместо ".../~/Account/Login"
, как показано на скриншоте ниже.
снимок экрана:
Часть файла "_Layout.cshtml"
:
<ul class="nav navbar-nav">
<li><a href="~/Home/Index" class="navbar-brand">My page</a></li>
<li><a href="~/Home/Users" class="navbar-brand">Users</a></li>
@await Component.InvokeAsync("MenuParts")
<li><a href="~/Account/Register" class="navbar-brand">Register</a></li>
</ul>
Маршрутизация в файле "Startup.cs":
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{login?}");
});
MenuPartsViewComponent.cs:
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewComponents;
namespace SocialNetwork.Components
{
public class MenuPartsViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
if (HttpContext.User.Identity.Name == null)
{
return new HtmlContentViewComponentResult(
new HtmlString(@"<li><a href=""~/Account/Login"" class=""navbar-brand"">Login</a></li>"));
}
else
{
return new HtmlContentViewComponentResult(
new HtmlString(@"<li><a href=""~/Account/Logout"" class=""navbar-brand"">Logout</a></li>"));
}
}
}
}