6

我在Our Umbraco 论坛上问过这个问题,但是我也想通过在此处发布相同的问题来增加获得解决方案的机会。

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

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

是否有另一种方法可以让当前Member查看上述方法在我的情况下如何不起作用?

4

4 回答 4

13
var m = Membership.GetUser(); 

那应该可以,刚刚在 4.7.1 上自己验证过;如果您没有以会员身份登录,它将返回 NULL,但是当您登录时,它应该可以得到您想要的。

于 2012-10-03T15:27:30.077 回答
4

如果 NULL 是一个问题,则与 @EJBrennan 略有不同,您可以在尝试 GetUser() 之前检查您是否已登录:

if (umbraco.library.IsLoggedOn())
{
  m = Membership.GetUser();
}
于 2012-10-04T08:18:39.110 回答
3

从 v7 开始,您可以使用MembershipHelper

@Members.CurrentUserName
@Members.GetCurrentMember()
@Members.GetCurrentMemberId()
于 2016-02-15T10:55:33.127 回答
0

现在更简单了,在 surfaceController 中你可以只使用一行:

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

如果无法访问 Members MembershipHelper:

var memberShipHelper = new MembershipHelper(UmbracoContext.Current);
var member = ApplicationContext.Current.Services.MemberService.GetById(memberShipHelper.GetCurrentMemberId());
于 2019-09-12T20:47:36.727 回答