2012-07-11 63 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