Abp framework :: Как показать / скрыть меню на основе функций

Я нахожусь на игровой площадке, узнаю много нового о новой abp framework. Поздравляю всех, кто здесь участвует, действительно хорошая инициатива !.

У меня вопрос о том, как применить функции к меню в приложении.

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

Я создал новое меню, реализующее интерфейс IMenuContributor, и могу видеть свое новое меню во время выполнения. Прохладный!!

Вот, а может я ошибаюсь. Я хотел бы применить RequiredFeature DataNotation для отображения / скрытия меню в зависимости от функции. Нравится:

[RequiresFeature("SalesModule")]
public class SalesMenuContributor : IMenuContributor
{
//Sales menu contributor
}

Когда я деактивирую свою функцию на хосте / арендаторе, меню не скрывается. Я действительно не знаю, что мне не хватает.

Спасибо за вашу помощь,


abp
person Jose Manuel Gonzalez    schedule 06.11.2020    source источник


Ответы (2)


Вы должны использовать службу IFeatureChecker, чтобы проверить эту функцию. Вы можете разрешить службу IFeatureChecker из контекста . ServiceProvider в меню разработчика. Таким образом, вы можете условно добавить в меню пункты меню.

[RequiresFeature] работает только в контроллерах или службах приложений.

person hikalkan    schedule 06.11.2020

Вот код, основанный на ответе Хилалкана:

public class SalesMenuContributor : IMenuContributor
{
            var featureChecker = context.ServiceProvider.GetRequiredService<IFeatureChecker>();

            if (await featureChecker.IsEnabledAsync("SalesModule"))
            {
               //[add your menu item][1]
            }
}
person Jose Manuel Gonzalez    schedule 06.11.2020