ASP.NET MVC:从另一个控制器调用一个控制器
ASP.NET MVC : calling a controller from another controller
我正在使用 ASP.NET MVC
编写 Web 应用程序,我想从另一个控制器调用一个控制器。更准确地说,我想在允许普通用户更改 his/her 密码的控制器中调用登录控制器中的例程,我在其中登录和注销。因此,我检查旧密码(由用户在更改密码表单中提供)。
我尝试在互联网上搜索更改用户(不是管理员)密码的方法,但没有找到任何好的方法。
谢谢。
我没有从另一个控制器调用控制器,而是从 HomeController
控制器中的视图调用我的用户管理控制器 AdminController
(通过 input
按钮)。
那么我例程EditByUser
在AdminController
中的代码写成:
[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);
}
然而,我没有设法检查旧密码...登录是在另一个控制器上...
我正在使用 ASP.NET MVC
编写 Web 应用程序,我想从另一个控制器调用一个控制器。更准确地说,我想在允许普通用户更改 his/her 密码的控制器中调用登录控制器中的例程,我在其中登录和注销。因此,我检查旧密码(由用户在更改密码表单中提供)。
我尝试在互联网上搜索更改用户(不是管理员)密码的方法,但没有找到任何好的方法。
谢谢。
我没有从另一个控制器调用控制器,而是从 HomeController
控制器中的视图调用我的用户管理控制器 AdminController
(通过 input
按钮)。
那么我例程EditByUser
在AdminController
中的代码写成:
[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);
}
然而,我没有设法检查旧密码...登录是在另一个控制器上...