我創建了一個簡單的示例來顯示我遇到的問題。在頁面上放置一個asp.net複選框,並在同一頁面上放置一個asp.net文本框。在後面的代碼中(使用vb.net),當複選框被選中時,將代碼顯示在文本框中,當複選框未被選中時,顯示一個空的文本框。很簡單,對吧?現在選中/取消選中複選框多次來回切換,文本框內容/無內容。一切正常 - 對嗎?用戶單擊後退按鈕時顯示的錯誤信息
現在點擊您的瀏覽器後退按鈕幾次。顯示的每個後退按鈕單擊的結果相反 - 複選框在文本框中未被檢查。複選框未選中,文本框中有文本。無論你把vb代碼放在哪裏(頁面加載,checkedchanged) - 相同的結果。
我在想它與保存在緩存中的頁面的時間有關。類似頁面的東西被保存在緩存中,而選中標記觸發「click」事件,但填充文本框的代碼尚未被觸發。然後,我可能會完全脫離標準,而且我做錯了事情很簡單。
任何想法/想法/幫助將不勝感激。
示例代碼:
ASPX:
<asp:CheckBox id="ChkBox1" runat="server" AutoPostBack="True" text="Sample" /><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
VB:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If ChkBox1.Checked = True Then
TextBox1.Text = "Checked"
Else
TextBox1.Text = ""
End If
End Sub
行 - 感謝和良好的信息 - 這是有道理的,是沿着我的想法是怎麼回事。現在 - 我如何在真實世界的場景中處理這個問題?我無法讓用戶點擊後退按鈕並看到錯誤的複選框/文本框結果。 – user1375002 2012-07-05 11:36:42
告訴瀏覽器不要緩存內容。 – nunespascal 2012-07-05 11:44:36
你好。即使添加緩存的給定標題也會遇到同樣的問題,還有其他方法可以處理這種情況。在瀏覽器返回後,它應該顯示真實的數據,而不是顯示來自瀏覽器的緩存數據。 – Liquid 2016-07-14 09:57:05