【问题标题】:Handling form submit event处理表单提交事件
【发布时间】:2013-03-24 14:02:13
【问题描述】:

我有以下表格:

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl, @class = "form-vertical login-form", id = "loginform" }))

                    <button type="submit" class="btn green pull-right">
                        Login <i class="m-icon-swapright m-icon-white"></i>
                    </button>

}

这是处理事件函数的javascript

$(document).ready(function () {

            $("#loginform").submit(function () {
                alert('Handler for .submit() called.');
                return false;
            });
}

但是这根本不起作用。

永远不会触发警报

【问题讨论】:

  • 看一下生成的源码,你就豁然开朗了。
  • 既然你知道只有一种形式,那就用$("form").submit(...);
  • @ShadowWizard,是什么让你认为只有一种形式?
  • @Darin 好点,在快速浏览后习惯了旧概念,发现在 MVC 中有多个表单是很常见的。所以在我之前的评论中,它应该是“如果你只有一种形式,就使用...”。

标签: c# jquery asp.net .net asp.net-mvc


【解决方案1】:

这很正常,您从未为表单分配idclass。查看浏览器中生成的 HTML 以了解我的意思。

您使用了完全错误的 BeginForm 帮助程序重载。

试试这个:

@using (Html.BeginForm(null, null, new { returnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-vertical login-form", id = "loginform" }))
{
    <button type="submit" class="btn green pull-right">
        Login <i class="m-icon-swapright m-icon-white"></i>
    </button>
}

现在请阅读 MSDN 上不同的BeginForm 重载并将yoursmine 进行比较。

如您所见,routeValues 参数和 htmlAttributes 参数之间存在差异。

【讨论】: