更新异步方法在 Web API 中不起作用


我正在使用 web api

mvc c#.i 注册为用户注册创建小演示 在 web api 中使用">注册"的用户成功.现在我想使用此方法也按 id 编辑此用户,所以怎么能做到这一点我不知道任何人知道请告诉我。 我的代码 我将在一种方法中管理添加/编辑调用,所以我将首先检查 id 上的条件是否为空,然后添加和 ID 不为空,然后进行编辑,但如何编辑此记录和角色。

这是我的方法:

  [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {            
        try
        {
            if (model.Id == "")
            {          
              //here is for add user method         
                var user = new ApplicationUser() { UserName = model.Email, Email = model.Email,PhoneNumber = model.PhoneNumber };
                IdentityResult result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    var UsersContext = new ApplicationDbContext();
                    var res = UsersContext.Users.Where(x => x.UserName == user.UserName).FirstOrDefault();
                    var UserId = res.Id;
                    await UserManager.AddToRoleAsync(UserId, model.UserRole);
                    return Ok(result);
                }
                return Ok(result);
            }
            else
            {
               //here i want write edit code
                var UsersContext = new ApplicationDbContext();
                var Team = UsersContext.Users.Find(model.Id);
                Team.UserName = model.UserName;
                Team.Email = model.Email;
                Team.PhoneNumber = model.PhoneNumber;
                IdentityResult result = await UserManager.UpdateAsync(Team); //here getting error.
                return Ok(result);  
            }                
            return Ok("Done");
        }
        catch (Exception ex)
        {                
        }
        return Ok();
    }  

更新:

首先检查是否将值传递给所有必填字段

在控制器类调用大括号 {.

[Authorize]
public class AccountController : Controller
{
 UserStore<IdentityUser> myUserStore = new UserStore<IdentityUser>(new 
                                    ApplicationDbContext());
 //rest code

然后在你的 Register(( Post 方法中,像下面这样做,

if (model.Id == "")
 {
  //Add new user code
 }
else
 {
  var context = myUserStore.Context as ApplicationDbContext;
  var Team = context.Users.Find(model.Id);
  //change the field value what ever you want to update
  context.Users.Attach(Team);
  context.Entry(Team).State = EntityState.Modified;
  context.Configuration.ValidateOnSaveEnabled = false;
  await context.SaveChangesAsync();
  return Ok("Updated");
 }

希望对:)有所帮助

最新更新