ASP.NET MVC:从另一个控制器调用一个控制器

ASP.NET MVC : calling a controller from another controller

我正在使用 ASP.NET MVC 编写 Web 应用程序,我想从另一个控制器调用一个控制器。更准确地说,我想在允许普通用户更改 his/her 密码的控制器中调用登录控制器中的例程,我在其中登录和注销。因此,我检查旧密码(由用户在更改密码表单中提供)。

我尝试在互联网上搜索更改用户(不是管理员)密码的方法,但没有找到任何好的方法。

谢谢。

我没有从另一个控制器调用控制器,而是从 HomeController 控制器中的视图调用我的用户管理控制器 AdminController(通过 input 按钮)。

那么我例程EditByUserAdminController中的代码写成:

        [HttpPost]
        [Authorize]
        public async Task<IActionResult> EditByUser(string email, string passwordnew, string passwordconf)
        {
            AppUser user = await userManager.FindByEmailAsync(email);
            if (user != null)
            {
                IdentityResult validEmail
                    = await userValidator.ValidateAsync(userManager, user);
                if (!validEmail.Succeeded)
                {
                    AddErrorsFromResult(validEmail);
                }                

                IdentityResult validPassnew = null;
                bool passNewEqPassConf = passwordconf == passwordnew;
                if (!passNewEqPassConf)
                {
                    ModelState.AddModelError("", "New Password not equal to Confirmation!");
                }
                if (!string.IsNullOrEmpty(passwordnew) && passNewEqPassConf)
                {
                    validPassnew
                        = await passwordValidator.ValidateAsync(userManager, user, passwordnew);
                    if (validPassnew.Succeeded)
                    {
                        user.PasswordHash = passwordHasher.HashPassword(user, passwordnew);
                    }
                    else
                    {
                        AddErrorsFromResult(validPassnew);
                    }
                }
                if (((validEmail.Succeeded && validPassnew == null)
                    || (validEmail.Succeeded
                        && passwordnew != string.Empty && validPassnew.Succeeded)) && passNewEqPassConf)
                {
                    IdentityResult result = await userManager.UpdateAsync(user);
                    if (result.Succeeded)
                    {
                        return RedirectToAction("Index", "Home", new { email = user.Email });
                    }
                    else
                    {
                        AddErrorsFromResult(result);
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", "User not found!");
            }

            return View(user);
        }

然而,我没有设法检查旧密码...登录是在另一个控制器上...