ASP.NET C#<asp:button type =“ button”>,但仍然像<asp:button type =“ submit”>

时间:2018-07-20 03:08:04

标签: javascript c# asp.net

<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;"

它解决了导致回发的“登录”按钮的问题。

1 个答案:

答案 0 :(得分:1)

尝试关注

<asp:Button runat="server" id="LoginBtn" type="Button" Text="Login" OnClientClick="javascript:document.getElementById('jsLogin').style.display='inline-grid'; return false;" />