asp.net закусочная не работает при нажатии кнопки c#

#c# #asp.net

#c# #asp.net

Вопрос:

На asp.net нажатие кнопки, я хочу вызвать эту функцию, чтобы показать панель закусок. Однако этого не удалось сделать. Я попытался поместить кнопку вне формы runat=»server», и это сработало. Однако мне нужно, чтобы он находился внутри тега формы runat=»server» и при нажатии asp.net кнопка, как мне решить эту проблему?

Home.aspx

 <style>
    #snackbar {
        visibility: hidden;
        min-width: 250px;
        margin-left: -125px;
        background-color: #333;
        color: #fff;
        text-align: center;
        border-radius: 2px;
        padding: 16px;
        position: fixed;
        z-index: 1;
        left: 50%;
        bottom: 30px;
        font-size: 17px;
    }

        #snackbar.show {
            visibility: visible;
            -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
            animation: fadein 0.5s, fadeout 0.5s 2.5s;
        }

    @-webkit-keyframes fadein {
        from {
            bottom: 0;
            opacity: 0;
        }

        to {
            bottom: 30px;
            opacity: 1;
        }
    }

    @keyframes fadein {
        from {
            bottom: 0;
            opacity: 0;
        }

        to {
            bottom: 30px;
            opacity: 1;
        }
    }

    @-webkit-keyframes fadeout {
        from {
            bottom: 30px;
            opacity: 1;
        }

        to {
            bottom: 0;
            opacity: 0;
        }
    }

    @keyframes fadeout {
        from {
            bottom: 30px;
            opacity: 1;
        }

        to {
            bottom: 0;
            opacity: 0;
        }
    }
</style>

<script>
    function myFunction() {
        var x = document.getElementById("snackbar");
        x.className = "show";
        setTimeout(function () { x.className = x.className.replace("show", ""); }, 3000);
    }
</script>

<form runat="server">
    <asp:LinkButton ID="reportThreadBtn" class="btn btn-default btn-sm" ForeColor="red" runat="server" OnClick="myFunction()" Font-Size="Medium"><i class="glyphicon glyphicon-flag"></i></asp:LinkButton>
</form>
 

Ответ №1:

Для достижения этой цели вы можете использовать OnClientClick.

Убедитесь, что javascript, который вы вводите в него, возвращает значение false , это гарантирует, что поведение LinkButton по умолчанию (то есть: активация обратной отправки формы) не выполняется.

 <asp:LinkButton .... OnClientClick="myFunction(); return false;" ...> ... </asp:LinkButton>
 

Обновление: ниже приведен полный код my /Default.aspx, и с этим кодом он работает — внизу появляется черное окно Snackbar (хотя оно немного мигает, когда исчезает, я не выяснял, почему это так).
Я создал его как часть совершенно нового, максимально простого и в остальном пустого «ASP.NET Веб-приложение» (.NET 4.7.2). Проверьте различия между моим кодом и вашим, особенно HTML / CSS, и внесите необходимые изменения.

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebForms1._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

    <style>
        #snackbar {
            visibility: hidden;
            min-width: 250px;
            margin-left: -125px;
            background-color: #333;
            color: #fff;
            text-align: center;
            border-radius: 2px;
            padding: 16px;
            position: fixed;
            z-index: 1;
            left: 50%;
            bottom: 30px;
            font-size: 17px;
        }

        #snackbar.show {
            visibility: visible;
            -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
            animation: fadein 0.5s, fadeout 0.5s 2.5s;
        }

        @-webkit-keyframes fadein {
            from {
                bottom: 0;
                opacity: 0;
            }

            to {
                bottom: 30px;
                opacity: 1;
            }
        }

        @keyframes fadein {
            from {
                bottom: 0;
                opacity: 0;
            }

            to {
                bottom: 30px;
                opacity: 1;
            }
        }

        @-webkit-keyframes fadeout {
            from {
                bottom: 30px;
                opacity: 1;
            }

            to {
                bottom: 0;
                opacity: 0;
            }
        }

        @keyframes fadeout {
            from {
                bottom: 30px;
                opacity: 1;
            }

            to {
                bottom: 0;
                opacity: 0;
            }
        }
    </style>

    <script>
        function myFunction() {
            var x = document.getElementById("snackbar");
            x.className = "show";
            setTimeout(function () { x.className = x.className.replace("show", ""); }, 3000);
        }
    </script>

    <br/>
    <asp:LinkButton ID="reportThreadBtn" class="btn btn-default btn-sm" ForeColor="red" runat="server" OnClientClick="myFunction(); return false;" Font-Size="Medium">CLICK IT</asp:LinkButton>
    <br/>

    <div id="snackbar"><h2>snackbar</h2></div>
</asp:Content>
 

Комментарии:

1. я тоже пробовал это, это тоже не сработало: (

2. Я обновил ответ, пожалуйста, проверьте. Я попробовал, и это работает для меня.

3. Я пробовал это, но это тоже не работает! <asp:LinkButton ID=»reportThreadBtn» class =»btn btn-по умолчанию btn-sm» ForeColor=»красный» runat=»сервер» OnClientClick=»myFunction(); возвращает false;» Размер шрифта =»Средний»> Нажмите меня </ asp:LinkButton>

4. Я добавил свой полный код. Боюсь, на данный момент я не могу сделать больше.