<asp:Button runat="server" id="LoginBtn" type="Button" Text="Login" OnClientClick="document.getElementById('jsLogin').style.display='inline-grid'" />
如标题所示,上面的代码行是我的Master.master页面中显示的内容。
但是当我运行调试器(Visual Studio 2017)时,chrome和应用程序运行带有回发的按钮,并且当我检查该元素时,它仍显示
<input type="submit" name="ctl00$LoginBtn" value="Login" onclick="document.getElementById('jsLogin').style.display='inline-grid';" id="LoginBtn">
我有 zero 条提示该怎么做。
UPDATE 7/19/2018(20分钟后)
还原到较旧的源代码管理:
唯一的变化是在master.master的顶部附近:
<html lang="en-us">
<form runat="server">
<head runat="server">
<asp:scriptmanager runat="server"></asp:scriptmanager>
代替
<html lang="en-us">
<head runat="server">
<form runat="server">
<asp:scriptmanager runat="server"></asp:scriptmanager>
,在Default.aspx页面上,此行:
<%@ MasterType VirtualPath="~/Master.master" %>
没有被注释掉。
从根本上说,其他什么都没有改变。O.o比我更了解ASP.Net的人,请提示我。
更新7/20/2018-18:39 gmt
再现了根本原因。
<asp:textbox>
设置为必需。我删除了 required 并创建了一个自定义javascript函数。当您尝试清除设置了必需的隐藏表单上的身份验证时,显然FormsAuthentication.Signout()存在问题。
<script>
function validation() {
var username = document.getElementById('uNameLogin').value;
var password = document.getElementById('uPasswordLogin').value;
if (username == null || password == null || username == "" || password == "")
{
document.getElementById('uNameLogin').value = "User Name & Password Required!";
return false;
}
}
</script>
在添加该内容后,为防止发回邮件,我遵循将 return false 添加到OnClientClick javascript的建议:
OnClientClick="javascript:document.getElementById('jsLogin').style.display='inline-grid'; return false;"
它解决了导致回发的“登录”按钮的问题。
答案 0 :(得分:1)
尝试关注
<asp:Button runat="server" id="LoginBtn" type="Button" Text="Login" OnClientClick="javascript:document.getElementById('jsLogin').style.display='inline-grid'; return false;" />