我目前在我的视图中有此代码用于测试目的,并且有效:
@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>
}
}
我的问题是:这是最简单的方法吗?似乎不需要使用会员服务来获取另一种类型的用户(Imember而不是会员资格使用者(来访问自定义属性。但是我看不到会员使用者访问自定义属性的任何方法。我只是想念什么吗?还是您打算这样做?
编辑:根据 @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>
}
}
理论上应该可以做:
@Members.GetCurrentMember()
应该返回当前成员作为ipublyContent,然后您可以以与已发布的内容相同的方式访问成员属性,例如GetPropertyValue("propertyAlias")
。