【问题标题】:MVC 4 ASP.Net FORM submit() function not workingMVC 4 ASP.Net FORM submit() 函数不起作用
【发布时间】:2015-05-12 19:26:10
【问题描述】:

我正在尝试使用以下方法获取登录表单。我正在使用 JQuery 版本 1.11.2 和 MVC4。看来问题出在这行代码

    <input type="button" onclick="getPasswordHash('password', 'nonce',     'hash');
    $('#loginForm').submit(function (event) {
        event.preventDefault();
        alert('Submitting form.. Please wait');
        return true;
    })" value = "Login"  />

这是在 Login.cshtml 中找到的完整代码

@model string

@{
    ViewBag.Title = "Login";
}

@section ExtraHeaders
{
    <script src="@Url.Content("~/Scripts/Login.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/sha256.js")" type="text/javascript"></script>

}

<form action="@Href("~/Accounts/Login")" method="post" id="loginForm">
    <input type="text" name="name" id="name"/> Name <br/>
    <input type="password" name="password" id="password"/> Password <br/>
    <input type="hidden" name="nonce" id="nonce" value="@Model"/>
    <input type="hidden" name="hash" id="hash" value="hash"/>
    <input type="button" onclick="getPasswordHash('password', 'nonce', 'hash');
$('#loginForm').submit()" value = "Login"  />

</form>

在 Login.js 文件中找到 getPassword 方法

function getPasswordHash(passwordElement, nonceElement, hashElement)
{
    var password = $('#' + passwordElement).attr('value');
    var nonce = $('#' + nonceElement).attr('value');
    $('#' + hashElement).attr('value', $.sha256(password + nonce));
    $('#' + passwordElement).attr('value', '');
}

问题是当我按下登录时没有任何反应。页面不刷新。它的行为就像我没有点击一样。

编辑:我现在检查了 Chrome 开发者工具中的源代码。它告诉我未捕获的引用错误:未定义 getPasswordHash

http://i.imgur.com/LOW9E0f.png

提前致谢。

【问题讨论】:

  • 那是因为您在使用event.preventDefault(); 时告诉提交事件执行其默认行为(即提交)。
  • 放回 .submit() 仍然无法正常工作
  • 使用 preventDefault 是问题所在。我现在无法告诉您从此处更改了什么,请编辑您的问题以反映您的最新版本。
  • 好的,请稍等
  • 我已经更新了form中最后输入的代码行

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

您需要一个包含用户的数据库。要创建数据库,请打开管理器控制台并输入 Enable-Migrations -ContextTypeName [ContextClassName] 这应该会创建一个迁移文件夹,然后您需要在登录之前注册一个用户。

编辑:确保您在 Accounts 控制器中有登录功能

【讨论】:

  • 我确定这不是您的最终数据库布局,只是概念验证,但您的数据库中不应该有纯文本密码。话虽如此,您的后端代码似乎正在寻找密码的哈希版本。您是否尝试过调试 function getPasswordHash(passwordElement, nonceElement, hashElement) 以查看其返回的内容
  • 是的,它只是一个概念证明。我确实尝试过调试,显然它甚至没有进入该功能。我试图更改 type="submit" 而不是 type="button" ,它只会将我重定向回显然没有管理员访问权限的帖子。这证明了输入命令只是到达类型并且完全忽略了 onclick 功能
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多