2010-08-24 6 views
2

Je rencontre un problème étrange lorsque je lance l'application via F5 ou View In Browser. Lorsque je lance la page suivante pour la première fois, "Hello" s'affiche dans la zone de texte. Cliquez sur le bouton "Click Me", le texte est changé en "Clicked!". C'est très bien. Fermez le navigateur et exécutez à nouveau F5 (ou Afficher dans le navigateur), la zone de texte affiche "Cliquez sur!". Il n'affiche plus la valeur initiale. Je vois ce problème sur IE6 (et c'est la seule option pour mon employeur), mais pas sur FF3.6 ni Googgle Chrome 4.x. Je pensais que cela pourrait être lié ViewState. Mais, le problème persiste après que ViewState soit désactivé.Contrôle Asp.Net Valeur initiale non affichée après la première exécution

Une idée ou un indice sur ce qui a mal tourné?

Default.aspx fichier ci-dessous:

<%@ 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 fichier ci-dessous:

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!"; 
    } 
} 

Répondre

0

Le texte étant montré dans TextBox1 est mise en cache par le navigateur, donc essentiellement, il est (IE6) ne pas faire une demande au serveur chaque fois que vous actualisez la page. Vous remarquerez que lorsque vous appuyez sur F5 le navigateur vous invite:

IE6 warning about resending information

Cela signifie que lorsque vous appuyez sur F5 ou Actualiser, le navigateur effectue le post-retour pour vous qui déclenche la méthode et Button1_Click provoquant ainsi TextBox1 à contenir "cliqué!".

Je ne suis pas sûr de savoir comment vous rencontrez le:

Fermer la Brower et exécuter F5 (ou Afficher dans le navigateur) à nouveau, la zone de texte montre « clicked! »

problème que je ne peux pas obtenir IE6 pour le faire. Une solution possible consiste à placer des contraintes de cache dans les en-têtes que vous envoyez afin que le navigateur ne stocke rien dans son cache, ce qui devrait empêcher que cela ne pose problème.

Questions connexes