在umbraco中以编程方式创建成员配置文件

时间:2013-05-30 08:26:04

标签: umbraco profile membership

我正在尝试创建新成员programaticaly。 实际上我需要构建一个从电子表格中导入成员的函数。

我构建了一个继承ProfileBase的Member类,并且可以在注册时创建一个programaticaly成员,但这需要他登录才能更新完整的个人资料。 所以会员注册,他的会员资格被创建,我登录他,创建他的个人资料并将他登出​​。这对用户不可见,但在后台运行良好。

现在我需要通过umbraco后台的功能导入成员。 我能够创建成员,但我无法更新使用web.config,umbraco和我的Member类中设置的自定义属性的配置文件。我只是在我的数据库中获取空配置文件。

知道在这种情况下我能做些什么吗?如何在不记录成员的情况下更新成员个人资料? 谢谢

1 个答案:

答案 0 :(得分:0)

我最近做了一些非常相似的事情,假设你的会员类看起来像下面这样(或至少做同样的事情)。

public class MemberProfile : ProfileBase
{
    #region Firstname
    private const string FIRSTNAME = "_firstname";
    [SettingsAllowAnonymous(false)]
    public string FirstName
    {
        get
        {
            return GetCustomProperty(FIRSTNAME);
        }
        set
        {
            SetCustomProperty(FIRSTNAME, value);
        }
    } 
    #endregion

    #region Get and Set base properties

    private string GetCustomProperty(string propertyName)
    {
        var retVal = "";
        var prop = base.GetPropertyValue(propertyName);
        if (prop != null)
        {
            retVal = prop.ToString();
        }
        return retVal;
    }
    private void SetCustomProperty(string propertyName, object value)
    {
        var prop = base[propertyName];
        if (prop != null)
        {
            base.SetPropertyValue(propertyName, value);
        }
    }

    #endregion
}

然后使用以下方法应该允许您检索成员,更新属性并保存它们:

var existingMember = MemberProfile.Create(username) as MemberProfile;
existingMember.FirstName = firstName;

existingMember.Save();

令人困惑的是,Create()方法实际上返回了现有用户,他们只是因为某些原因而调用它...