6

私は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では次の1行だけを使用できます。

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());
于 2019-09-12T20:47:36.727 に答える