以编程方式从Umbraco中的成员获取属性

以编程方式从Umbraco中的成员获取属性,umbraco,Umbraco,我以为这会很简单,但是 我们已经创建了一个用户和一个具有各种属性的成员类型 当我们试图通过成员对象访问属性时,我们一无所获 //成员m是当前用户 例如。 Property s=m.getProperty(“PreferdUserName”); 是空的 m、 getProperties的计数为零 我们错过了什么明显的东西吗 会不会有拼写错误 “PreferredUserName”可能希望成为“PreferredUserName” 除此之外,它看起来是正确的。最后,我求助于将成员属性存储在一个单独的

我以为这会很简单,但是

我们已经创建了一个用户和一个具有各种属性的成员类型 当我们试图通过成员对象访问属性时,我们一无所获

//成员m是当前用户

例如。 Property s=m.getProperty(“PreferdUserName”); 是空的

m、 getProperties的计数为零


我们错过了什么明显的东西吗

会不会有拼写错误

“PreferredUserName”可能希望成为“PreferredUserName”


除此之外,它看起来是正确的。

最后,我求助于将成员属性存储在一个单独的db表中,这无论如何更接近于我所需要的。 我猜想这与我使用自定义msbuild任务从umbraco外部创建memberType的方式有关。

试试看

Property s = m.getProperty("PreferdUserName").value;
如果这仍然不起作用,那么看看这篇关于成员属性的文章


您可以创建自己的类并扩展ProfileBase。下面的代码将公开您在Umbraco中创建的属性。e、 g.翁布拉科别名为“名字”

[SettingsAllowAnonymous(false)]
public string FirstName
{
    get
    {
        var o = base.GetPropertyValue("first_name");
        if (o == DBNull.Value)
        {
            return string.Empty;
        }
        return (string)o;
    }
    set
    {
        base.SetPropertyValue("first_name", value);
    }
}
然后你可以像这样访问属性

string firstName = ((MemberProfile)HttpContext.Current.Profile).FirstName;
有关如何设置这一切的更多信息,请参见此处:


如果您需要获取Umbraco中当前用户以外的其他用户的会员详细信息并获取他们的用户名,这可能会对其他人有所帮助

var TheirUsername = "s12345";

Member MemberFind = new Member(Convert.ToInt32(Membership.GetUser(***TheirUsername***).ProviderUserKey));

//now use this value

var NameOfUser = MemberFind.Text;

var EmailAddress = MemberFind.Email;

我也检查过了:)我认为这不再有效(umbraco 4.5及以上),链接断了