.Net Core 控制器编辑 ActionResult 错误

.Net Core Controller Edit ActionResult errors

提问人:bootsy 提问时间:6/27/2019 更新时间:6/27/2019 访问量:46

问:

在 HttpGet 上。Select(user => HttpGet 的新 AspNetUser()' 行 我得到“无法在此范围内声明名为”user“的本地或参数,因为该名称在封闭的本地范围内用于定义本地或参数”

在 HttpPost 上,我在 Listdata listdata 行上收到错误,找不到类型或命名空间名称“Listdata”(是否缺少 using 指令或程序集引用?

    [HttpGet]
      public ActionResult Edit(string id)
      {
        //Get user and return the Edit View
        AspNetUser user = db.Users.Where(u => u.Id == id)
        .Select(user => new AspNetUser()
        {
          Id = user.Id,
          UserName = user.UserName,
          NormalizedUserName = user.NormalizedUserName,
          Email = user.Email,
          NormalizedEmail = user.NormalizedEmail,
          EmailConfirmed = user.EmailConfirmed,
          PasswordHash = user.PasswordHash,
          SecurityStamp = user.SecurityStamp,
          ConcurrencyStamp = user.ConcurrencyStamp,
          PhoneNumber = user.PhoneNumber,
          PhoneNumberConfirmed = user.PhoneNumberConfirmed,
          TwoFactorEnabled = user.TwoFactorEnabled,
          LockoutEnd = user.LockoutEnd,
          LockoutEnabled = user.LockoutEnabled,
          AccessFailedCount = user.AccessFailedCount


          // Add the remainder properties
        }).FirstOrDefault();
          return View(user);
       }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult 

   Edit([Bind("Id,Username,NormalizedUserName,Email,NormalizedEmail,
   EmailConfirmed,PasswordHash,SecurityStamp,")] Listdata  listdata)
    {
        if (ModelState.IsValid)
        {
            db.Entry(listdata).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(listdata);
        }

我的期望是,当我单击“编辑视图”页面中的“编辑”链接时,它将转到我想要更新其信息的用户,并将该更改保存在帖子上。

ASP.网络核心

评论


答:

0赞 Tony Ngo 6/27/2019 #1

您有该错误,因为您在同一范围内定义了 2 个用户变量AspNetUser user.Select(user

因此,将您的代码更改为此代码

 AspNetUser userInfo = db.Users.Where(u => u.Id == id) // here
    .Select(user => new AspNetUser()
    {
        Id = user.Id,
        UserName = user.UserName,
        NormalizedUserName = user.NormalizedUserName,
        Email = user.Email,
        NormalizedEmail = user.NormalizedEmail,
        EmailConfirmed = user.EmailConfirmed,
        PasswordHash = user.PasswordHash,
        SecurityStamp = user.SecurityStamp,
        ConcurrencyStamp = user.ConcurrencyStamp,
        PhoneNumber = user.PhoneNumber,
        PhoneNumberConfirmed = user.PhoneNumberConfirmed,
        TwoFactorEnabled = user.TwoFactorEnabled,
        LockoutEnd = user.LockoutEnd,
        LockoutEnabled = user.LockoutEnabled,
        AccessFailedCount = user.AccessFailedCount


        // Add the remainder properties
    }).FirstOrDefault();

    return View(userInfo);
0赞 bsod_ 6/27/2019 #2

您在这里声明了两次“用户”——

    AspNetUser user = db.Users.Where(u => u.Id == id)

和这里

    .Select(user => new AspNetUser()

在 HttpPost 上,我在 Listdata listdata 行上收到错误,找不到类型或命名空间名称“Listdata”(是否缺少 using 指令或程序集引用?

正如错误所述,您缺少该类的 using 语句。您需要创建 Listdata 或添加对它所在的项目的引用。