2013-06-14 3 views
1

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

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

ответ

1

Вы можете использовать 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/

+0

пакета для CMS7 на пути к Nuget feed;) –

+0

Это замечательно. Спасибо :) – user1408470

+0

Привет, Вы можете попробовать его - http://nuget.episerver.com/en/OtherPages/Package/?packageId=Geta.Community.EntityAttributeBuilder.CMS7 Любая обратная связь ценна :) –

0

Вам необходимо использовать класс AttributeHandler.

Джоэл написал большое руководство с примерами кода here

Смежные вопросы