Как получить пользовательское свойство пользователя в Razor ASP. NET без ViewModels? - PullRequest
0 голосов
/ 13 апреля 2020

Я создал свое новое пользовательское свойство для пользователя в проекте ASP. NET ("DarkTheme"). У меня проблема (см. Ниже). Я могу получить доступ к User.Identity.Name без каких-либо ViewModels. Я могу получить доступ к User.Identity.IsInRole () и так далее. Но я не могу получить доступ к своей новой собственности ("DarkTheme"). Я не хочу использовать viewmodels (мне пришлось бы переписать все приложение). Есть ли способ до go до места, где ASP. NET делает User.Identity.Name доступным без каких-либо ViewModels и добавляет свойство «DarkTheme»?

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Вы можете использовать OnActionExecuted метод в вашем контроллере в сочетании с Dynami c ViewBag

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    if (Request.IsAjaxRequest() || filterContext.IsChildAction) return; // you don't need styling for ajax requests which return json

    base.OnActionExecuted(filterContext);
    YourUser user = ... // get user from db/claims or get theme from cookies etc.;
    ViewBag.DarkTheme = user.DarkTheme;
}

, и в связи с этим он будет вызываться просто @ViewBag.DarkTheme, пространство имен не требуется

0 голосов
/ 14 апреля 2020

Я не нашел ответа на эту проблему, но у меня есть обходной путь.

Я использовал атрибут User.IsInRole ("DarkTheme"), чтобы передать значение в представление (и загрузить другое * 1004). * файлы в зависимости от значения). Это единственная роль, которую пользователь может назначить себе без разрешения администратора.

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