Создать атрибут программно в EPiServer

Это может быть очень простой вопрос, но я очень плохо знаком с EPiServer, поэтому, пожалуйста, помогите.

Я работаю на демонстрационном сайте EPiServer Relate. Я хочу программно создать новый атрибут для типа Episerver.Common.Security.IUser. Я создал атрибуты, используя параметры администратора режима редактирования CMS. Но я хочу знать, как это сделать в коде.

2 ответа

Решение

Вы можете использовать CommunityAttributeBuilder ( https://github.com/Geta/Community.EntityAttributeBuilder), который аналогичен PageTypeBuilder для CMS. В настоящее время он поддерживает CMS6, я передам v7, как только закончу тестирование. Украсив свойства вашего класса специальным атрибутом, вы найдете те, что созданы на целевом сайте.

Например:

[CommunityEntity(TargetType = typeof(IUser))]
public class UserAttributes : IClubUserAttributes
{
    [CommunityEntityMetadata]
    public virtual int AccessType { get; set; }

    [CommunityEntityMetadata]
    public virtual string Code { get; set; }

    [CommunityEntityMetadata]
    public virtual int EmployeeKey { get; set; }

    [CommunityEntityMetadata]
    public virtual bool IsAdmin { get; set; }
}

Библиотека будет сканировать все сборки и искать типы, украшенные атрибутом CommunityEntity. Если он найден, свойства будут проверены, а в БД автоматически будут созданы свойства, украшенные атрибутом CommunityEntityMetadata. Он также поддерживает строго типизированный интерфейс через тип IUser:

var metadata = user.AsAttributeExtendable<UserAttributes>();
metadata.AccessType = info.AccessType;
metadata.Code = info.Code;
metadata.EmployeeKey = info.EmployeeKey;
metadata.IsAdmin = info.IsAdmin;

Более подробную информацию о библиотеке можно найти - http://world.episerver.com/Blogs/Valdis-Iljuconoks/Dates/2012/6/Community-Attribute-Builder-final/

Более подробную информацию о внутренностях (если интересно) можно найти здесь - http://www.tech-fellow.lv/2012/06/when-you-need-something-stronger/

Вам нужно использовать класс AttributeHandler.

Джоэл написал отличное руководство с примером кода здесь

Другие вопросы по тегам