【问题标题】:Call Post Action From Different Controller In MVC从 MVC 中的不同控制器调用 Post Action
【发布时间】:2018-10-18 13:23:36
【问题描述】:

将常规 ASP.NET 站点转换为 MVC,我遇到了一个问题,该问题在现有站点中很简单,但在 MVC 中却令人困惑。注册过程完成后,重定向到登录页面,传递用户名和密码,登录用户并显示条款页面,因为这是用户第一次登录。

MVC 项目中的 Login 视图有一个 Post 操作:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(Login login)
{
   ...
   if (!u.TermsAccepted)
      return RedirectToAction("AgreementPage", "Login");
}

我需要注册控制器来使用它,但似乎没有办法从不同的控制器调用 Post 操作。我能做的最好的就是显示登录视图,填写用户名和密码。在 MVC 中有什么方法可以做到这一点?

编辑:

应该加上Login控制器也有一个Get:

[HttpGet]
public ActionResult Login()
{
   ViewBag.ErrorMessage = "";
   return View();
}

使用 RedirectToAction 调用这个,而不是 Post:

Login login = new Login() { Username = info.UserInfo.UserName, Password = info.UserInfo.Password };

return RedirectToAction("Login", "Login", login);

【问题讨论】:

    标签: model-view-controller


    【解决方案1】:

    很抱歉让你困惑,这里是答案

    MVC 不支持重定向帖子

    answer

    【讨论】:

    • 感谢您的回复。然而,这不起作用。您使用的方法的版本根本不起作用。需要使用具有动作名称和控制器名称的重载来查找动作。我已经编辑了原始帖子以更详细地解释问题。使用 RedirectToAction 还会将用户名和密码添加到 URL,这是不可接受的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多