2012-07-11 70 views
0

该问题看起来非常简单,但它给我带来了痛苦 我正在手动创建一个登录页面,用于检查来自linq的用户电子邮件和密码。在登录页面上有一个asp标签,它根据“user not exist”或“user is inactive”等查询结果显示错误消息等。在两个文本框上都有asp必需的字段验证器。 问题是,如果用户第一次尝试失败并且信息显示在标签上,它不会消失,除非用户成功插入。我希望文本返回为提交按钮上的lable1.text =“”,但它不能作为其服务器端控件,并且文本框验证程序不会让它变空。我必须使用java脚本吗?在提交服务器之前隐藏asp标签文本

+0

您是否尝试禁用标签的视图状态? – 2012-07-11 14:39:40

+0

登录成功后,您的登录信息是否重定向? – codingbiz 2012-07-11 14:44:31

+0

@AmiramKorach你说过我试过但没用。与使visible = false相同?如果是的话,将如何再次启用它? m对不起m新的在asp – ali 2012-07-11 16:11:51

回答

1

最简单的事情就是在javascript中清除消息,就像你想的那样。

<asp:Button ID="SubmitButton" OnClientClick="ClearLableText" runat="server" /> 

和最新的JavaScript,按您的评论:

function ClearLableText() { var element = document.getElementById("<% this.lblMessage.ClientID %>"); element.innerHTML = ""; } 
+0

。因为这是按钮事件,我如何将标签id传递给javascript函数并使其值为空?我尝试的方式与我们为html元素所做的相同,但它在函数调用时不断提供异常,或者在java脚本中返回null。这里是我的函数调用和javascript:onclick =“btnLogin_Click”OnClientClick =“ClearLableText('<%this.lblMessage.ClientId%>');”函数ClearLableText(elementId)var element = document.getElementById(elementId); element.value =“”; } – ali 2012-07-11 16:32:22

+0

这个JavaScript选项应该可以工作。从你的函数中尝试'var label = document.getElementById(<%= lblMessage.ClientId%>)'而不是通过它 – codingbiz 2012-07-11 16:51:36

+0

我已根据你的评论更新了我的答案。它比你最初写的更加紧密,但我认为这是一个相当具体的东西,不会在很多地方重复使用。 (编辑:tcoder和我想的是一样的东西) – 2012-07-11 16:52:30

0

你可以试试这个

protected void page_load(object sender, EventArgs e) 
{ 
    MyMessageLabel.Text = ""; //or .Visible = false; 
} 

protected void Button_Click(object sender, EventArgs e) 
{ 
    //By this time, page_load had already executed and the Message Label cleared 
    MyMessageLabel.Text = "new result from server"; 

    if(validResult) 
    //RedirectToWhere(); 
    else 
    //StayOnPage(); 
} 

希望它为你工作。

+0

此解决方案的问题是必需的字段验证程序将阻止字段为空时的回发,并且该消息将保留。上面的逻辑将永远不会触发,因为它依赖于ap ostback。 – 2012-07-11 16:42:37

+0

感谢您的帮助。这是我最初的。但一旦按下按钮并登录失败,标签就会获取错误文本。当文本字段验证程序在将它发送到服务器或重新加载页面之前检查所需字段时,我希望它消失。就像asp验证错误信息一样 – ali 2012-07-11 16:45:22