Перейти к содержанию

Обновление представлений Razor для связи с пользовательским интерфейсом Identity

Добавим виджет Login в макет, а также убедимся, что страницы Identity используют тот же макет, что и остальная часть приложения.
Сначала создадим файл Areas/Identity/Pages/_ViewStart.cshtml и добавим туда следующее:

@{ Layout = "/Pages/Shared/_Layout.cshtml"; }

Таким образом, для страниц Identiy используется тот же макет по умолчанию, что и в остальном приложении.
Далее добавим _LoginPartial.cshtml в Pages/Shared и определим виджет Login.
@using Microsoft.AspNetCore.Identity
@using RecipeApplication.Data;
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

<ul class="navbar-nav">
@if (SignInManager.IsSignedIn(User))
{
    <li class="nav-item">
        <a  class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @User.Identity.Name!</a>
    </li>
    <li class="nav-item">
        <form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/", new { area = "" })" method="post" >
            <button  type="submit" class="nav-link btn btn-link text-dark">Logout</button>
        </form>
    </li>
}
else
{
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Register</a>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>
    </li>
}
</ul>

Фактически, это файл _LoginPartial.cshtml из шаблона по умолчанию, но с использованием ApplicationUser.

Теперь можно разместить в основном шаблоне

<partial name="_LoginPartial" />


Последнее обновление : 4 мая 2023 г.
Дата создания : 5 октября 2022 г.

Комментарии

Комментарии