【问题标题】:Insert users Id into multiple tabels using MVC Identity使用 MVC Identity 将用户 ID 插入到多个表中
【发布时间】:2019-08-08 02:21:25
【问题描述】:

注册成功后我想在多个表中插入用户id

public async Task<ActionResult> Register(RegisterViewModel model , RoleViewModel role )
    {
        if (ModelState.IsValid)
        {
            ApplicationDbContext context = new ApplicationDbContext();
            var user = new ApplicationUser {
                UserName = model.UserName,};

            Activity activity = new Activity
            {
                RoleId = model.RoleName,
                UserId = model.Id,
            };
            entities.activities.Add(activity);
            entities.SaveChanges();

            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded )
            {
                result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);

                await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

                return RedirectToAction("Index", "Home");
            }

            AddErrors(result);
        }

这是 AcountController ,没有任何事情发生我想将用户表中的 Id 插入到活动表中的 UserId 中

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您至少有两种选择

    首先。 如果您使用 Code First,您可以与 ApplicationUser 类一起创建您的 Activity 类。看看这里https://go.microsoft.com/fwlink/?LinkID=317594

    第二。 您可以按照您在此处所做的方式检索用户 ID

    result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);
    var currentId = user.Id;
    

    此外,您的 Activity 插入必须在创建用户之后进行 就像下面的代码

    public async Task<ActionResult> Register(RegisterViewModel model, RoleViewModel role)
    {
       if (ModelState.IsValid)
       {
           ApplicationDbContext entities = new ApplicationDbContext();
           var user = new ApplicationUser {UserName = model.UserName};            
    
           var result = await UserManager.CreateAsync(user, model.Password);
           if (result.Succeeded )
           {
               Activity activity = new Activity
               {
                   RoleId = model.RoleName,
                   UserId = user.Id,
               };
               entities.activities.Add(activity);
               entities.SaveChanges();
               result = await UserManager.AddToRolesAsync(user.Id, model.RoleName);
    
               await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
    
               return RedirectToAction("Index", "Home");
           }
    
           AddErrors(result);
       }
    }
    

    【讨论】:

      【解决方案2】:

      您实例化了ApplicationDbContext context,但您不使用它。 然后您使用entities,但它是从哪里来的? 只有这里显示的控制器代码,我猜你应该这样做:

      context.activities.Add(activity);
      context.SaveChanges();
      

      最后,你传入了RoleViewModel role,但你没有使用它。也许你可以删除它?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-14
        • 2013-02-11
        • 1970-01-01
        • 2014-02-17
        • 2017-10-06
        • 2021-09-08
        • 1970-01-01
        相关资源
        最近更新 更多