2013-03-26 26 views
0

我创建了一个类来处理自定义字段的会员用户创建。umbraco会员createuser&选择个人资料数据

我已经做到了在此基础上的解决方案:

现在我尝试使用创建用户并获取配置文件数据:

if (Membership.GetUserNameByEmail(email) == null) 
{ 
MembershipUser member = Membership.CreateUser(username, password, email); 

Roles.AddUserToRole(username, "WebsiteUsers"); 

CCL.MemberProfile currentProfile = CCL.MemberProfile.CurrentUser; 

bool exists = currentProfile != null; 
Response.Write(exists.ToString()); 
} 

当前配置文件正在返回null

所以我无法从表单值分配给它们通过在类中设置的属性来处理我的会员自定义属性:(

我不明白我怎么可以让它的工作:(

没有人有一些想法感谢

回答

1

建议1:

确保ProfileBase.Create返回的东西,可以被转换为“MemberProfile”,否则如果CA不是那么强制它只会返回NULL。

建议2:

确保上下文你正在运行在具有登录的用户,让您的来电Membership.GetUser()可以找到当前用户对象。

其他的想法:

的ProfileBase.Create方法假定的用户名,你传递是经过认证的用户,我不知道它的行为,当用户不authenticated..maybe返回空值?

+0

谢谢@ g7876413,我验证了用户,所以它正确返回currentProfile。但是,当我尝试分配我的自定义值:'currentProfile.FullName =“Lucy”; currentProfile.Save();'它不起作用:(任何建议? – nickornotto 2013-03-26 14:24:25

+0

对不起@ user1611620,我可以建议的唯一的其他事情是检查您的“MemberProfile”类的实现,在示例中引用set方法on “Fullname”属性似乎在调用Save()以及设置值,所以你不需要在自己设置值之后调用它。 同时检查你没有重新实现Save()并且做了它任何与base.Save不同的东西 – g7876413 2013-03-26 15:58:55

+0

1.我在我的web.config中定义了自定义属性,但它们导致错误'属性已经定义',所以我删除了部分 - 在我将它放回去之后开始工作。更改了属性的名称(在umbraco&web.config中的成员类型中),因为我的类中给出的同一名称导致了上述错误。2.我更改了脚本以更新成员配置文件AFTER身份验证 - 这需要重新加载页面。添加元素在用户进行身份验证/重新加载页面之前,角色不能正常工作。总结:谢谢@ g7876413的建议,因为它使我朝着正确的方向 – nickornotto 2013-03-27 16:57:55