这可能是一个非常简单的问题,但我对 EPiServer 很陌生,所以请帮忙。
我在 EPiServer Relate 演示站点上工作。我想以编程方式在 Episerver.Common.Security.IUser 类型上创建一个新属性。我使用 CMS 编辑模式管理选项创建了属性。但我想知道如何在代码中做到这一点。
这可能是一个非常简单的问题,但我对 EPiServer 很陌生,所以请帮忙。
我在 EPiServer Relate 演示站点上工作。我想以编程方式在 Episerver.Common.Security.IUser 类型上创建一个新属性。我使用 CMS 编辑模式管理选项创建了属性。但我想知道如何在代码中做到这一点。
您可能希望使用类似于 CMS 的 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/
您需要使用AttributeHandler类。
Joel 用示例代码在这里写了一个很棒的指南