我正在尝试创建新成员programaticaly。 实际上我需要构建一个从电子表格中导入成员的函数。
我构建了一个继承ProfileBase的Member类,并且可以在注册时创建一个programaticaly成员,但这需要他登录才能更新完整的个人资料。 所以会员注册,他的会员资格被创建,我登录他,创建他的个人资料并将他登出。这对用户不可见,但在后台运行良好。
现在我需要通过umbraco后台的功能导入成员。 我能够创建成员,但我无法更新使用web.config,umbraco和我的Member类中设置的自定义属性的配置文件。我只是在我的数据库中获取空配置文件。
知道在这种情况下我能做些什么吗?如何在不记录成员的情况下更新成员个人资料? 谢谢
答案 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()方法实际上返回了现有用户,他们只是因为某些原因而调用它...