1

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

我在 EPiServer Relate 演示站点上工作。我想以编程方式在 Episerver.Common.Security.IUser 类型上创建一个新属性。我使用 CMS 编辑模式管理选项创建了属性。但我想知道如何在代码中做到这一点。

4

2 回答 2

1

您可能希望使用类似于 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/

于 2013-06-18T21:20:39.093 回答
0

您需要使用AttributeHandler类。

Joel 用示例代码在这里写了一个很棒的指南

于 2013-06-15T12:18:40.847 回答