Javascript MVC 4 ASP.Net表单提交()函数不起作用
我正在尝试使用下面的方法获得一个登录表单。我使用的是JQuery版本1.11.2和MVC4。问题似乎来自这一行代码Javascript MVC 4 ASP.Net表单提交()函数不起作用,javascript,jquery,asp.net,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在尝试使用下面的方法获得一个登录表单。我使用的是JQuery版本1.11.2和MVC4。问题似乎来自这一行代码 <input type="button" onclick="getPasswordHash('password', 'nonce', 'hash'); $('#loginForm').submit(function (event) { event.preventDefault(); alert('Submitting f
<input type="button" onclick="getPasswordHash('password', 'nonce', 'hash');
$('#loginForm').submit(function (event) {
event.preventDefault();
alert('Submitting form.. Please wait');
return true;
})" value = "Login" />
问题是,当我按Login时,什么也没有发生。页面不会刷新。它的行为就像我没有点击任何东西一样
编辑:我现在已经检查了Chrome开发者工具中的源代码。它告诉我未捕获的引用错误:未定义getPasswordHash
提前感谢。您需要一个包含用户的数据库。要创建数据库,请打开manager控制台并键入
启用迁移-ContextTypeName[ContextClassName]
这将创建一个迁移文件夹,然后您需要在登录之前注册一个用户
编辑:确保您在帐户控制器内部有登录功能,这是因为您在使用
event.preventDefault()时告诉提交事件不要执行其默认行为(即提交)代码>。将其放回.submit()仍不起作用问题在于使用preventDefault。我不知道你在这一点上改变了什么,请编辑你的问题以反映你的最新版本。好的,请给我一秒钟。我已经更新了FORM中的最后一行输入代码。我确定这不是你的最终数据库布局,只是概念证明,但你的数据库中不应该有纯文本密码。话虽如此,您的后端代码似乎正在查找密码的哈希版本。您试过调试函数getPasswordHash(passwordElement,NonceeElement,hashElement)
以查看其返回的内容吗是的,这只是一个概念证明。我确实尝试过调试,但显然它甚至没有进入函数。我试图更改type=“submit”而不是type=“button”,它会将我重定向回没有管理员访问权限的帖子。这证明了输入命令只到达类型,而完全忽略了onclick函数
@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>
function getPasswordHash(passwordElement, nonceElement, hashElement)
{
var password = $('#' + passwordElement).attr('value');
var nonce = $('#' + nonceElement).attr('value');
$('#' + hashElement).attr('value', $.sha256(password + nonce));
$('#' + passwordElement).attr('value', '');
}