我想从同一控制器中的[HttpPost]
操作重定向到[HttpGet]
操作。
有可能吗?
我正在尝试不为Login重写相同的代码,因为它是一个复杂的,而不是典型的登录功能
这是我的代码:
[HttpGet]
public ActionResult Login(){
return View();
}
[HttpPost]
public ActionResult Login(LoginModel model)
{
//search user and create sesion
//...
if (registered)
{
return this.RedirectToAction("Home","Index");
}else{
return this.RedirectToAction("Home", "signIn");
}
}
[HttpGet]
public ActionResult signIn(){
return View();
}
[HttpGet]
public ActionResult signInUserModel model)
{
//Register new User
//...
if (allOk)
{
LoginModel loginModel = new LoginModel();
loginModel.User = model.User;
loginModel.password = model.password;
//next line doesn't work!!!!!
return this.RedirectToAction("Home","Login", new { model = loginModel);
}else{
//error
//...
}
}
任何帮助都将不胜感激。
由于
答案 0 :(得分:2)
您可以从Post方法重构核心登录逻辑,然后从两个位置调用该新方法。
e.g。假设您创建一个LoginService类来处理登录某人的情况。这只是从您的操作中使用它的情况,因此无需从一个操作重定向到另一个
答案 1 :(得分:2)
您可以从方法名称
返回不同的视图public ActionResult signInUserModel model)
{
...
return View("Login", loginModel);
}
有点晚了,但我遇到了同样的问题......
答案 2 :(得分:1)
有可能。所有操作必须位于同一控制器中。
public ActionResult Login(){
return View();
}
[HttpPost]
public ActionResult Login(LoginModel model)
{
//search user and create sesion
//...
if (registered)
{
return RedirectToAction("Index");
}
return View(model);
}
public ActionResult SignIn(){
return View();
}
[HttpPost]
public ActionResult SignIn(UserModel model)
{
//Register new User
//...
if (allOk)
{
return RedirectToAction("Login");
}
return View(model);
}