2013-05-30 123 views
0

我正在尝试创建新成员programaticaly。 实际上,我需要构建一个从电子表格导入成员的函数。在umbraco中以编程方式创建成员配置文件

我构建一个继承ProfileBase并可以在注册时创建一个成员programaticaly的成员类,但需要他登录才能更新完整配置文件。 因此,一个会员注册,他的会员资格被创建,我登录他,创建他的个人资料并注销他。这对用户不可见,但在后台运行良好。

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

任何想法我可以在这种情况下做什么?如何在不登录会员的情况下更新会员资料? 谢谢

+1

只是一个快速的评论,所以你不是重新发明轮子,CMSImport可以从Excel导入成员,免费版可以导入多达500免费为您:http:// soetemansoftware .nl/cmsimport /功能 – jakobandersen

+0

谢谢@miracledev但我有超过500名会员,而且我的公司不会为一次关闭操作付费。无论如何,我已经建立了所有的API我只是无法更新配置文件,如果有意义 – nickornotto

+0

你可以发布你已经有的代码吗? –

回答

0

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

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()方法实际上返回的现有用户,他们只是叫它创建出于某种原因...

相关问题