在EPiServer中以编程方式创建属性

时间:2013-06-14 10:03:33

标签: episerver episerver-7

这可能是一个非常简单的问题,但我对EPiServer很新,所以请帮忙。

我正在开发EPiServer Relate演示网站。我想在Episerver.Common.Security.IUser类型上以编程方式创建一个新属性。我使用CMS编辑模式管理员选项创建了属性。但我想知道如何在代码中执行此操作。

2 个答案:

答案 0 :(得分:1)

您可能希望使用与PageTypeBuilder类似的CommunityAttributeBuilder(https://github.com/Geta/Community.EntityAttributeBuilder)。目前它支持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属性修饰的类型,如果找到,则会扫描属性,并在DB中自动创建使用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/

答案 1 :(得分:0)

您需要使用AttributeHandler类。

Joel写了一篇很棒的指南,其中包含示例代码here