【问题标题】:Why is this form's request not working?为什么此表单的请求不起作用?
【发布时间】:2011-12-30 02:07:27
【问题描述】:

我有一个简单的登录表单,我希望将其发布到 ASP.Net MVC。我发现如果将操作设置为 /Login 它可以工作。但是如果我写出诸如“/Login/Index”之类的动作名称,那么它就会失败。服务器将 302 返回到登录页面,并且永远不会调用 Index() 的 POST 版本。这是为什么呢?

这是 HTML:

<form action="/Login/Index/" method="post">

            <label for="username">Username</label>
            <input type="text" id="username" name="username" maxlength="60" />

            <label for="password">Password</label>
            <input type="password" id="password" name="password" maxlength="20" />

            <input type="submit" value="Login" />
        </form>

这是控制器:

public class LoginController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(string username, string password)
        {
            return null;
        }
}

这是 Global.asax 中定义的唯一路由

routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Movie", action = "Index", id = UrlParameter.Optional }
            );

已解决: 在我的 Web.Config 中,我有 loginUrl="~/Login" 并且它需要是 "~/Login/Index" 否则访问被拒绝 URL 并重定向回登录页面。

【问题讨论】:

  • 您是否有可能在未重建的情况下更改了视图?
  • 在 Firebug 中监控活动客户端。如果methodpost,它应该执行 POST,但它可能会立即被重定向到其他东西。那里可能有线索。
  • 对不起,实际上我看到我收到了一个 POST,但服务器以 302 响应登录。为什么不调用 Index 的 POST 版本?
  • 你确定没有调用 POST 吗?您是否在“return null”行放置断点进行检查?
  • 我认为解决了。在我的 Web.Config 中,我有 loginUrl="~/Login" 并且它必须是 "~/Login/Index" 否则访问被拒绝 URL 并重定向回登录页面。

标签: asp.net html asp.net-mvc


【解决方案1】:

在我的 Web.Config 中,我有 loginUrl="~/Login",它必须是 "~/Login/Index"。由于匿名访问被拒绝,因此指定为 loginURL 的 URL 以外的任何 URL 都会被拒绝并重定向回登录页面。

【讨论】:

    【解决方案2】:

    “/Login/Index”和“/Login/Index/”是不同的操作。如果你去掉那个尾随的 /,它可能会按照你期望的方式工作。

    【讨论】:

    • 无论哪种方式结果都相同。你是对的,但是 MVC 的路由工作方式我几乎可以肯定他们在这里没有区别对待。
    【解决方案3】:

    尝试将 [HttpGet] 添加到第一个方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2015-05-18
      • 2018-09-20
      • 2018-03-26
      相关资源
      最近更新 更多