Пожалуйста, спросите меня, как добавить привязку в Ninject.Web.Common?
У меня есть объект для роли
public class AppRole : IdentityRole
{
public AppRole() : base() { }
public AppRole(string name)
: base(name)
{ }
}
и менеджер
public class AppRoleManager : RoleManager<AppRole>
{
public AppRoleManager(RoleStore<AppRole> store) : base(store)
{ }
}
я хочу, чтобы метод создания работал в Ninject, как я это делал с UserManager и SignUpManager
мой общий Ninject
private static void RegisterServices(IKernel kernel)
{
System.Web.Mvc.DependencyResolver.SetResolver(new Infrastructure.NinjectDependencyResolver(kernel));
kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>>();
kernel.Bind<RoleManager<IdentityRole, string>>().ToSelf();
}
kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>>();
kernel.Bind<RoleManager<IdentityRole, string>>().ToSelf();
Я изменяю привязку, которая в случае ошибки неверна, на
kernel.Bind<AppRoleManager>().ToSelf();
kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>>();
и проблема в конструкторе выключена.(спасибо Александр)
но проблема в поле зрения
мой контроллер Не было ошибок при компиляции приложения,Однако в обратном представлении
private IUserManagerRepository userManager;приватное чтение только для AppRoleManager userRole;
public RoleController(IUserManagerRepository userManager, AppRoleManager userRole)
{
this.userManager = userManager;
this.userRole = userRole;
}
// GET: Role
public ActionResult Index()
{
return View(userRole.Roles);
}
И мой взгляд
@using Domain.IdentityManager
@using Domain.Entities
@model IEnumerable<AppRole>
<div class="panel panel-primary">
<div class="panel-heading">Roles</div>
<table class="table table-striped">
<tr>
<th>ID</th>
<th>Название</th>
<th>Пользователи</th>
<th style="min-width: 150px"></th>
</tr>
@foreach (AppRole role in Model)
{
<tr>
<td>@role.Id</td>
<td>@role.Name</td>
<td>
@if (role.Users == null || role.Users.Count == 0)
{
@: Нет пользователей в этой роли
}
else
{
}
</td>
}
</table>