ASP C# | MessageBox一直显示

3

我有一个JavaScript消息框,当我点击Repeater中的事件或刷新当前页面时,它会不断显示。

这是函数:

public myFunctions()
{

}
/** Display Successs/Error Message **/
public void DisplayUserMessage(string messageType, string messageString, Label ErrorMessageLabel)
{
    ErrorMessageLabel.Visible = true;
    ErrorMessageLabel.Text = "<b>" + messageType.Substring(0, 1).ToUpper() + messageType.Substring(1).ToLower() + ":</b> " + messageString;
    ErrorMessageLabel.CssClass = messageType.ToLower() + "_message";
}
public void HideUserMessage(Label ErrorMessageLabel)
{
    ErrorMessageLabel.Visible = false;
    ErrorMessageLabel.Text = "";
    ErrorMessageLabel.CssClass = "";
}

这里是使其淡出的jQuery代码:
$(document).ready(function () {
/** Success/Error Messages **/
$('.success_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow');
$('.error_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow');

在MasterPage中,代码如下:

});

<!-- Message Box -->
<div id="msgBox" runat="server">
      <asp:Label ID="ErrorMessageLabel" CssClass="" runat="server" Visible="false"></asp:Label>
</div>

以下是当成功发生时,代码后置脚本的内容:

以下是成功时的代码后置脚本:

Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel");
new myFunctions().DisplayUserMessage("success", "Administrator Updated!", ErrorMessageLabel);

有人知道我怎么才能让它不在我点击其他按钮或刷新页面后不断地出现吗?
3个回答

1

使用隐藏输入框,在成功函数被调用时设置其值。其他时间重置该值。在文档准备就绪函数中检查隐藏元素的值,然后调用动画函数。

<input id="txtHidSuccess" type="hidden" runat="server" />

在页面加载时

txtHidSuccess.Value = "0";

在成功/错误函数中
txtHidSuccess.Value = "1";

jQuery

$(function(){
    if ($("#txtHidSuccess").val() === "1") {
        /** Success/Error Messages **/
       $('.success_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow');
       $('.error_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow');    
    }
});

1
请在 Page_Load 函数中使用以下代码:如果(!postback){ErrorMessageLabel.Text="";},并尝试。 - kbvishnu

0
if(IsPostBack)
         new myFunctions().HideUserMessage(ErrorMessageLabel);

这个有效。谢谢 @Harie


0

我看到你调用了DisplayUserMessage(),但没有调用HideUserMessage()。我的猜测是当你设置ErrorMessageLabel属性时,它们会存储在跨页面回发的视图状态中。

与其使用ASP.NET Label控件,你可以尝试用普通的div包装一些文本,并使用CSS将其隐藏。当你的应用程序发生成功事件时,你可以使用ClientScriptManager.RegisterStartupScript()编写一个脚本发送给客户端,以显示该div。然后,如果该div可见,你的动画函数可以淡出该div。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接