我目前在我的视图中有这个代码用于测试目的,它可以工作:
@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>
}
}
答案 0 :(得分:2)
理论上你应该能够做到:
@Members.GetCurrentMember()
哪个应该将当前成员作为IPublishedContent返回,然后您可以使用与发布内容相同的方式访问成员属性,例如GetPropertyValue("propertyAlias")
。