ASP C#| MessageBox继续显示

时间:2010-12-15 03:05:30

标签: c# javascript asp.net jquery

我有一个JavaScript MessageBox,当我点击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 个答案:

答案 0 :(得分:1)

使用隐藏输入并在调用成功函数时设置值。所有其他时间重置该值。在文档就绪函数中检查隐藏元素的值,然后调用animate函数。

<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 :(得分:0)

我看到你在哪里调用DisplayUserMessage(),但不是HideUserMessage()。我的猜测是,当你设置ErrorMessageLabel属性时,它们会存储在视图状态中,并在回发中保持不变。

您可以尝试使用常规div包装一些文本并使用CSS来隐藏它,而不是使用ASP.NET Label控件。当您的应用程序中出现成功事件时,您可以使用ClientScriptManager.RegisterStartupScript()将脚本写入显示div的客户端。然后,如果div可见,你的动画功能可以淡出div。

答案 2 :(得分:0)

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

这很有用。谢谢@Harie