0

私はUser.Identityに拡張プロパティを追加しようとしていますと、以下のように行っている:ビューからアクセスUser.Identityプロパティ拡張(エラー)

IdentityModel.csで私はEbrowAdminというフィールドが追加されました今、私は私のコントローラからのこの新しいプロパティにアクセスすることができます

public static class Extensions 
    { 
     public static string GetEbrowAdmin(this IIdentity identity) 
     { 
      var claim = ((ClaimsIdentity)identity).FindFirst("EbrowAdmin"); 
      // Test for null to avoid issues during local testing 
      return (claim != null) ? claim.Value : string.Empty; 
     } 
    } 

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     userIdentity.AddClaim(new Claim("EbrowAdmin", EbrowAdmin.ToString())); 

     return userIdentity; 
    } 

    public bool EbrowAdmin { get; set; } 

私はプロジェクトフォルダに拡張機能と呼ばれるfolerを作成し、Extensions.csというクラスを追加しました:

User.Identity.GetEbrowAdmin(); 

は、しかし、私は同じコードと私のビューからアクセスすることはできません。

@User.Identity.GetEbrowAdmin(); 

すべてのアイデアは、私が何をしないのですか?

答えて

1

あなたの内線についてあなたの意見を伝える必要があります。通常のC#コードと同様に、ビューはusingディレクティブでコードの名前空間を含めるまでカスタムコードを認識しません。

はい、あなたが正しいですあなた直視したり、viewstart.cshtml

+0

のいずれかにusing <YOURPROJECT>.<YOURNAMESPACE>.Extensionsを入れてみてください - それを解決しています。ビュー/ Web.configに名前空間拡張を追加しましたが、それは何らかの理由で動作しません...しかし、ビューに直接指示を加えることはトリックでした。ありがとうございました。 – Johnathan

関連する問題