Umbraco - 访问自定义成员属性

时间:2018-02-27 11:50:34

标签: c# razor umbraco umbraco7

我目前在我的视图中有这个代码用于测试目的,它可以工作:

@if (Umbraco.MemberIsLoggedOn())
{
    var user = System.Web.Security.Membership.GetUser();


    if (user != null)
    {
        var m = ApplicationContext.Services.MemberService.GetByUsername(user.UserName);
        var testProperty = "";

        if (m.HasProperty("testProperty") && m.GetValue("testProperty") != null)
        {
            testProperty = m.GetValue("testProperty").ToString();
        }

        <p>User: @user.UserName is logged in</p>
        <p>Test property: @testProperty</p>
    }
}

我的问题是:这是最简单的方法吗?似乎没有必要使用MemberService来获取另一种类型的用户(IMember而不是MembershipUser)来访问自定义属性。但我在MembershipUser上看不到任何访问自定义属性的方法。我只是错过了一些东西吗?或者这是你打算怎么做的?

编辑: 根据@Tim的答案,下面的代码要好得多:

@if (Umbraco.MemberIsLoggedOn())
{
    var currentUser = Members.GetCurrentMember();

    if (currentUser != null)
    {
        var testProperty = currentUser.GetPropertyValue<string>("testProperty");
        <p>User: @currentUser.Name is logged in</p>
        <p>Test property: @testProperty</p>
    }
}

1 个答案:

答案 0 :(得分:2)

理论上你应该能够做到:

@Members.GetCurrentMember()

哪个应该将当前成员作为IPublishedContent返回,然后您可以使用与发布内容相同的方式访问成员属性,例如GetPropertyValue("propertyAlias")