2010-08-24 84 views
2

當我通過F5或View In Browser運行應用程序時遇到一個奇怪的問題。當我第一次運行以下頁面時,文本框中顯示「Hello」。點擊「點擊我」按鈕,文字將變爲「點擊!」。沒關係。關閉瀏覽器並再次運行F5(或在瀏覽器中查看),文本框顯示「Clicked!」。它不再顯示初始值。我在IE6上看到這個問題(這是我僱主的唯一選擇),但不是FF3.6,也不是谷歌Chrome 4.x。我認爲這可能與ViewState有關。但是,ViewState被禁用後,問題仍然存在。Asp.Net控制第一次運行後初始值不顯示

任何想法或提示出了什麼問題?

下面

Default.aspx文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server" enableviewstate="false"> 
    <div>  
     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Click Me" EnableViewState="false" UseSubmitBehavior="true" /> 
     <asp:TextBox ID="TextBox1" runat="server" Text="Hello" EnableViewState="false" ></asp:TextBox> 
    </div> 
    </form> 
</body> 
</html> 

Default.aspx.cs以下文件:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     TextBox1.Text = "Clicked!"; 
    } 
} 

回答

0

被顯示在TextBox1中正在被瀏覽器緩存中的文本,所以基本上就是(IE6 )每次刷新頁面時都不會向服務器發出請求。你會注意到,當你按下F5瀏覽器會提示你:

IE6 warning about resending information

這意味着,當你按F5或刷新來,瀏覽器執行後回來爲你這是觸發Button1_Click方法從而導致TextBox1包含「Clicked!」。

我不太清楚你是如何遇到:

關閉布勞爾並再次運行F5(或瀏覽器查看),文本框顯示「被點擊!」

問題,因爲我不能讓IE6做到這一點。一個可能的解決方案是在發送的頭文件中放入一些緩存約束,以便瀏覽器不會在緩存中存儲任何內容,這應該可以避免這個問題。