C# VisualStudioIdentity Framework用户管理器
我的问题是我试图创建一个“角色”并将其添加到用户。它在引用UserManager类时出错,如下星号所示C# VisualStudioIdentity Framework用户管理器,c#,asp.net,asp.net-identity,C#,Asp.net,Asp.net Identity,我的问题是我试图创建一个“角色”并将其添加到用户。它在引用UserManager类时出错,如下星号所示 public ActionResult RoleAddToUser(string UserName, string RoleName) { ApplicationUser user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).Fi
public ActionResult RoleAddToUser(string UserName, string RoleName)
{
ApplicationUser user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
var account = new AccountController();
account.**UserManager**.AddToRole(user.Id, RoleName);
var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
return View("ManageUserRoles");
我的账户控制员如下
public class AccountController : Controller
{
public UserManager<ApplicationUser, string> um = new UserManager<ApplicationUser, string>(ApplicationUser user, string key);
公共类AccountController:控制器
{
public UserManager um=new UserManager(ApplicationUser用户,字符串键);
我也试过了
public UserManager<ApplicationUser, string> um = new UserManager<>();
public UserManager<ApplicationUser, string> um = new UserManager<ApplicationUser,string>();
public UserManager um=new UserManager();
两人都错了,前者说:
重载的方法有一些无效参数
后者说:
预期类型
我也试过了
public UserManager<ApplicationUser, string> um = new UserManager<>();
public UserManager<ApplicationUser, string> um = new UserManager<ApplicationUser,string>();
public UserManager um=new UserManager();
这就产生了错误:
此方法不包含接受0个参数的构造函数
如何正确实现/调用/使用UserManager类?根据MSDN
UserManager具有以下构造函数定义
public UserManager( IUserStore<TUser, TKey> store)
public用户管理器(IUserStore)
因此,当您初始化它时,首先需要有IUserStore实例,如下所示
public class AccountController : Controller
{
public UserManager<ApplicationUser, string> um = new UserManager<ApplicationUser, string>(ApplicationUser user, string key);
public class MyUserStore<T> : IUserStore<T> where T: ApplicationUser
{ }
公共类MyUserStore:IUserStore,其中T:ApplicationUser
{ }
MyUserStore userStore = new MyUserStore<ApplicationUser>();
MyUserStore userStore=new MyUserStore();
UserManager<ApplicationUser, string> um = new UserManager(userStore);
UserManager um=newusermanager(userStore);
感谢您的回复。我在AccountController之前在AccountController中实现了您的第一个注意事项。我在AccountController中实现了您的第二个步骤,这很好。我在AccountController中的第二个步骤下实现了您的第三个步骤,当我传入“userStore”对象时,它会出错。错误消息为“字段初始值设定项无法引用非静态字段/方法/属性。请勿对初始值设定项使用静态