Что вы можете сделать здесь - создать службу (и зарегистрировать ее в контейнере DI), которая могла бы определить ваше состояние.Затем вы можете внедрить эту службу в ваше представление и вызвать метод для проверки значения:
@inject MyUserService myUserService
@if (await myUserService.GetIsCompanyOwnerAsync(User))
{
<div>Item for company owner</div>
}
В вашей службе вы можете, например, внедрить контекст вашей базы данных и запросить пользователя в соответствии с текущим пользователем.:
public class MyUserService
{
private readonly UserManager<User> _userManager;
public MyUserService(UserManager<User> userManager)
{
_userManager = userManager;
}
public async Task<bool> GetIsCompanyOwnerAsync(ClaimsPrincipal user)
{
var user = await _userManager.GetUserAsync(user);
return user.CompanyID.HasValue;
}
}
Обратите внимание, что это вызовет запрос к базе данных при каждом запросе, чтобы отобразить его в макете.В долгосрочной перспективе было бы лучше выставить это свойство напрямую как претензия к основному долгу претензий, например, как претензия OwnsCompany
.Таким образом, вы можете просто проверить заявку прямо в представлении:
@if (await User.FindFirst("OwnsCompany") != null)
{
<div>Item for company owner</div>
}