Макет не работает на Asp.net Core 3.0 для профиля пользователя - PullRequest
0 голосов
/ 01 ноября 2019

В Asp core 3.0 моя страница макета не работает для пользователя, когда он щелкает своим профилем "Области / Персона / Страницы / Аккаунт / Управление / _layout.cshtml"

Когда я нажимаю на электронное письмо по умолчанию послевходя в систему, я получаю Manage / Index.cshtml, но без деталей макета. Как и навигация, ссылки на забытые пароли и т. Д. Не отображаются. Я понятия не имею, что может вызвать это.

Я помещаю это в другие проекты и вижу любые несоответствия и не могу найти причину, почему мой макет не отображается.

Области / Удостоверение / Страницы / Аккаунт/Manage/_layout.cshtml

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

Области / Удостоверение / Страницы / Учетная запись / Управление / Index.cshtml

@page
@model IndexModel
@{
  ViewData["Title"] = "Profile";
  ViewData["ActivePage"] = ManageNavPages.Index;
}

Области / Удостоверение / Страницы / Учетная запись / _ViewStart.cshtml

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

Попытка увидеть, что мне не хватает, или любое другое место, чтобы проверить, чтобы отобразить страницу макета.

enter image description here

enter image description here

1 Ответ

1 голос
/ 11 ноября 2019

У меня была та же проблема, которая, как я подозреваю, возникает при замене сервисов. Вызов AddDefaultIdentity при запуске. ConfigureServices - В моем случае я заменил его на AddIdentity, поскольку мне нужно было передать RoleManager моим контроллерам.

Скорее всего, есть более элегантное решение этой проблемы, но я перестал искать его, поскольку считаю, что эта новая функциональность плохо документирована.

Вот как я решил это:

Я предполагаю, что вы уже создали леса для страниц удостоверений - если нет, см. https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-3.0&tabs=visual-studio

На странице в разделе Areas \ Identity \ Pages \ Account \ Manage_Layout.cshtml измените расположение макета на:

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

Теперь на вашей странице индекса Areas \ Identity \ Pages \ Account \ Manage \ Index.cshtml вам также нужно явно указать страницу макета:

@page
@model IndexModel
@{
    Layout = "_Layout.cshtml";
}
@{
    ViewData["Title"] = "Profile";
    ViewData["ActivePage"] = ManageNavPages.Index;
}

Вам также нужно будет явно указатьэтот макет на всех других страницах этой папки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...