2012-03-26 46 views
4

對不起,如果這原來是一個騙局。我找不到與我的問題完全相似的任何內容。ASP.NET回發和後退按鈕

我在窗體上有一個asp:標籤。在提交按鈕後,我做了服務器端驗證。如果失敗,我將標籤設置爲某個文本值。

如果我提供了有效信息並再次單擊提交,我將標籤設置爲空作爲提交點擊的一部分,並執行回發並顯示新頁面。

如果我點擊後退按鈕,它會在窗體和錯誤標籤中顯示正確的信息。

再次單擊提交表示標籤文本屬性爲空,儘管文本在屏幕上清晰可見。

我希望標籤爲空(實際上不可見),因爲我在執行任何操作之前將其設置爲空。

我已經嘗試過Text屬性和Visible屬性,但結果相同。

準備好了嗎? GO ...

+0

我只需使用那裏的驗證代碼/設計來避免冗長的代碼編寫。現在我已經把這個目標吹走了。我可以改變設計使用customvalidators和客戶端腳本... ????? – Roger 2012-03-26 15:21:52

+0

發佈一些代碼... – citronas 2012-03-26 15:31:01

+0

發佈你的Aspx代碼? – Pankaj 2012-03-26 17:43:48

回答

0

你試過:

protected void Page_Load(object sender, EventArgs e) 
{ 
    lblMessage.Visible = false; 
} 

你的每一個頁面加載你的信息是不可見的時間。因此,當您進行服務器驗證時,您可以設置標籤的文本並設置Visibility = true。

+0

是的。沒有幫助。輸出已被緩存,因此提交按鈕單擊中的控件沒有任何更改被推送到緩存。後退按鈕只顯示最後一次緩存的狀態。 – Roger 2012-03-26 15:14:17

+0

我想知道是否可以在點擊提交按鈕時清除緩存。我不能說我確信這會起作用或不起作用,只是一個建議..提高了你的問題。 – Seany84 2012-03-26 15:22:09

0

「如果我點擊後退按鈕,它會在窗體和錯誤標籤中顯示正確的信息。」 :這個沒問題;它會向您顯示發佈時的頁面狀態。

如果你不想讓你的信息標籤,以保留其可見或文本,標記應該是:

<asp:label id='myMsgLbl' runat='server' enableviewstate='false' visible='false/>' 

--edit

據我所知,與後退按鈕的行爲如預期的那樣。

也許你應該尋找一個允許禁用後退按鈕的解決方案,

或禁用形式的緩存(但我想這個解決方案將是不如你的第一個問題)

private void Page_Load(object sender, System.EventArgs e) 
    { 
     Response.CacheControl = "no-cache"; 
     Response.AddHeader("Pragma", "no-cache"); 
     Response.Expires = -1; 
     Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); 
+0

這並沒有解決我的問題。 – Roger 2012-03-26 15:10:35

+0

也嘗試設置此:Response.Cache.SetNoStore(); – Sergey 2012-04-03 01:19:40