停止在每次回发时触发警报框

时间:2019-06-19 16:01:05

标签: c# asp.net

我有一个Webform,当找不到搜索到的项目时会显示一个警告框。警报框全是asp端,在代码隐藏中称为c#端。

问题在于,第一次调用它后,它将在页面的每个回发上调用。单击后,除非再次错过搜索,否则它不会再次触发。

我已经尝试过if(!ispostback),但是最初的触发是回发,所以根本不会触发。 在回发期间,它甚至不会再次调用c#代码,而只是显示警报框。

    <style type="text/css">
        .alertBox
        {
            position: absolute;
            top: 100px;
            left: 50%;
            width: 500px;
            margin-left: -250px;
            background-color: #fff;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box;
            padding: 4px 8px;
        }
    </style>
    <script type="text/javascript">
        function closeAlert(e) {
            e.preventDefault();
            this.parentNode.style.display = "none";
        }
    </script>
</head>
<body>
    <form id="form_rooftopSAQPM" runat="server">
    <div runat="server" id="AlertBox" class="alertBox" Visible="false">
        <div runat="server" id="AlertBoxMessage"></div>
        <button onclick="closeAlert.call(this, event)">Ok</button>
    </div>
...
        private void site_Load(string siteNumber)
        {
            DataSet ds = retrieveDataFromSQL("exec s_RooftopSite " + siteNumber, "Couldn't retrieve site information");
            if(ds.Tables.Count>0)
            {
                //load the fields
                txtFoo.Text = ds.Tables[0].Rows[0][0].ToString();
            }
            else
            {
                MessageBoxShow("Site not found.");
            }
        }


protected void MessageBoxShow(string message)
        {
                this.AlertBoxMessage.InnerText = message;
                this.AlertBox.Visible = true;
        }

...

如何设置警报框,使其仅在C#代码调用时触发,而仍然允许它在首次调用(回发)时弹出?

1 个答案:

答案 0 :(得分:0)

我通过从JavaScript切换到C#来解决它:

ASP:

<asp:Button runat="server" id="btnCloseAlert" 
     onclick="btnCloseAlert_Click" Text="Ok" /> 

C#的代码背后:

protected void btnCloseAlert_Click(object sender, EventArgs e) 
{ 
    AlertBox.Visible = false; 
    AlertBoxMessage.InnerText = "";
}