2010-12-15 69 views
3

我有一个JavaScript MessageBox,当我点击Repeater中的事件或刷新当前页面时,它会一直显示。ASP C#| MessageBox保持显示

下面是函数:

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'); 

});

这是在母版:

<!-- 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); 

任何人都知道我可以从连续不断地出现,阻止它我点击另一个按钮或刷新页面后?

回答

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

这工作。谢谢@Harie

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

请使用Page_Load函数中的代码If(!postback){ErrorMessageLabel.Text =“”;}并尝试使用 – kbvishnu 2010-12-15 04:10:54

+0

@Harie。我创造了答案! – balexander 2010-12-15 23:38:53

0

我看到你打电话DisplayUserMessage(),但不是HideUserMessage()。我的猜测是,当您设置ErrorMessageLabel属性时,它们存储在视图状态持久性回传中。

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