【发布时间】:2019-11-14 22:55:41
【问题描述】:
场景
我有一个身份验证控制器,用于授权用户和管理员凭据以及注册新用户。当发现用户已经存在时,我想将控制器重新路由到我在控制器中声明的重载操作,将字符串作为路由值传递给该操作。但是,目前这似乎不起作用。
AuthController.cs
[HttpGet]
public IActionResult Register()
{
ViewData["Title"] = "Registration";
return View(new RegisterViewModel());
}
public IActionResult Register(string caption)
{
ViewData["Title"] = "Registration";
ViewBag.caption = caption;
return View(new RegisterViewModel());
}
[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel vm)
{
if (!ModelState.IsValid)
return View(vm);
var user = new IdentityUser
{
UserName = vm.Email,
Email = vm.Email
};
var result = await _userManager.CreateAsync(user, "password");
if (result.Succeeded)
{
// !> Initial Registration!
await _signInManager.SignInAsync(user, false);
return RedirectToAction("Index", "Home");
}
return RedirectToAction("Register", "Auth", "This user is currently configured with a password");
}
问题
目前如果我使用以下重定向:
return RedirectToAction("Register", "Auth", "This user is currently configured with a password");
它转到第一个,或者这个动作:
public IActionResult Register()
{
ViewData["Title"] = "Registration";
return View(new RegisterViewModel());
}
而不是第二个,或者这个动作:
public IActionResult Register(string caption)
{
ViewData["Title"] = "Registration";
ViewBag.caption = caption;
return View(new RegisterViewModel());
}
不太确定我是否正确处理了这个问题。任何意见或建议都将不胜感激。
【问题讨论】:
-
您正在执行重定向,因此您正在发出 GET 请求,这就是它调用第一个请求的原因。
标签: c# asp.net-mvc asp.net-core controller