2017-02-25 5 views
0

私は存在するすべての役割を取得し、このコードでやろうとしている。ASP。ネットコアMVC RoleManagerの役割は、オブジェクトのインスタンスに設定されていない

private readonly RoleManager<IdentityRole> _roleManager; 

public ActionResult ManageRole(string username) 
{ 
... 
var roleNamesList = _roleManager.Roles.ToList(); 
... 
} 

が、デバッグ中に、私はエラーを得ました:

NullReferenceException: Object reference not set to an instance of an object. 

解決策をお手伝いできますか?私は初心者です。おかげさまで

解決:私は(最初YourControllerで_roleManagerを初期化する必要があります) 機能

private readonly RoleManager<IdentityRole> _roleManager; 

public ManageController(
     ..., 
     RoleManager<IdentityRole> roleManager, 
     ...) 
     { 
      ...; 
      _roleManager = roleManager; 
      ...; 
     } 

public ActionResult ManageRole(string username) 
{ 
... 
var roleNamesList = _roleManager.Roles.ToList(); 
... 
} 
+0

'_roleManager'が初期化されていますか? – GurV

+0

私は_roleManagerを初期化しました: private readonly RoleManager _roleManager; そのコードは間違っていますか? –

+0

それはそこにしか宣言されていません。初期化するには、オブジェクトを割り当てる必要があります。 – GurV

答えて

0

このようにそれを取得します。

context.Roles.ToList() 
+0

私はこれを試して同じエラーが発生しました。 private readonly ApplicationDbContext _context; public ActionResult ManageRole(文字列のユーザー名) { ... var roleNamesList = _context.Roles.ToList(); ... } 私が行ったコードの解決方法はありますか? –

+0

dbContextを初期化していないため、コンストラクタで次のように初期化する必要があります。 public YourController() { _context = new ApplicationDbContext(); } –

+0

私はそれをしましたが、_contextを初期化した別のコントローラでは、私はこの解決策ですべてのrolenameを取得しました! 私の現在のworikingコントローラーで、私は_contextを初期化することでいくつかの問題を抱えています。なぜ(私は初心者ですか)不思議です。 とにかくこのソリューションは役に立ちます。ありがとう。 –

関連する問題