这可能是一个非常简单的问题,但我对EPiServer很新,所以请帮忙。
我正在开发EPiServer Relate演示网站。我想在Episerver.Common.Security.IUser类型上以编程方式创建一个新属性。我使用CMS编辑模式管理员选项创建了属性。但我想知道如何在代码中执行此操作。
答案 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