如何在Razor宏中获取当前成员

时间:2012-10-03 15:10:35

标签: macros umbraco

我在Our Umbraco forums上提出了这个问题,但是我想通过在这里发布相同的问题来增加获得解决方案的机会。

我遇到的问题是,在Razor宏中,我无法获取正在访问该网站的当前Member。我尝试了以下方法:

  • 调用Member.GetCurrentMember(),但这会返回NULL。
  • 调用Membership.GetUser(),但这会返回NULL
  • 调用UmbracoEnsuredPage.CurrentUser返回NULL;

还有另一种方法可以让当前的Member了解上述方法在我的情况下是如何工作的吗?

4 个答案:

答案 0 :(得分:12)

var m = Membership.GetUser(); 

这应该有效,只是自己在4.7.1验证了它;如果您没有以成员身份登录,它将返回NULL,但是当您登录时,它应该可以获得您想要的内容。

答案 1 :(得分:4)

如果NULL是一个问题,那么@ E.J.Brennan只是略有变化,您可以在尝试GetUser()之前检查您是否已登录:

if (umbraco.library.IsLoggedOn())
{
  m = Membership.GetUser();
}

答案 2 :(得分:3)

从v7开始,您可以使用MembershipHelper

@Members.CurrentUserName
@Members.GetCurrentMember()
@Members.GetCurrentMemberId()

答案 3 :(得分:0)

现在,它甚至更加容易,在surfaceController中,您只可以使用一行:

var member = ApplicationContext.Current.Services.MemberService.GetById(Members.GetCurrentMemberId());

如果无法访问会员MembershipHElper:

var memberShipHelper = new MembershipHelper(UmbracoContext.Current);
var member = ApplicationContext.Current.Services.MemberService.GetById(memberShipHelper.GetCurrentMemberId());