2010-08-24 4 views
1

a) Dans Asp.Net nous pouvons vérifier si une demande est une publication ou non via la propriété Page.IsPostBack.Mais d'où vient cette valeur? Ainsi, où dans la requête entrante le navigateur met-il cette valeur?La demande n'est pas considérée comme une publication même si ...

b) Pour autant que je sache, appuyer sur un bouton de rechargement permet également au navigateur d'envoyer des données de formulaire au serveur. Ainsi, est sous le capot frapper le bouton reload du même navigateur que d'appuyer sur un bouton submit (qui est imbriqué dans un élément FORM)?

c) En supposant que le navigateur affiche A.aspx pour le temps de poing et l'utilisateur assumant clique le bouton du navigateur reload, alors je pense que cette demande sera considérée comme une publication par Asp.Net (surtout depuis le navigateur renvoie également tout form data), mais ce n'est pas. Pourquoi?

Thanx

Répondre

4

La propriété IsPostBack ne regarde que pour voir si la demande est une action de requête POST. S'il s'agit d'un POST, IsPostBack renvoie true. Le fait de cliquer sur actualiser/actualiser dans un navigateur n'envoie généralement PAS de données de formulaire au serveur - la plupart du temps cela provoque une requête GET (qui est la requête par défaut que vous envoyez chaque fois que vous visitez un site).

Si vous cliquez sur Actualiser sur une page qui a été reçue à la suite d'une opération POST, le navigateur demande à l'utilisateur s'il souhaite soumettre à nouveau les données avant d'effectuer à nouveau la demande POST. Un navigateur ne soumettra pas de données de formulaire à moins que l'utilisateur ne le confirme (au moins, c'est ainsi que cela fonctionne dans IE, Firefox et Chrome). Fiddler est un excellent outil pour aider dans ce genre de situation.

Il se trouve au milieu entre le navigateur et le serveur et vous pouvez regarder tout le trafic aller et venir. Vous pouvez le télécharger here.

+0

1 - "La propriété IsPostBack ne vérifie que si la requête effectuée est une action de requête POST .S'il s'agit d'un POST, IsPostBack renvoie true." Il n'y a donc aucun moyen pour la première demande d'être une demande POST? 2 - "Hitting recharger/rafraîchir sur un navigateur n'envoie généralement pas de données de formulaire au serveur" Si A.aspx contient un contrôle TextBox et si l'utilisateur de chargement de première page entre du texte dans la zone de texte et clique sur le bouton de rechargement du navigateur, puis, lorsque la page est rechargée, l'utilisateur saisi est toujours là. Si les données du formulaire n'ont pas été envoyées au serveur, pourquoi le navigateur a-t-il affiché du texte sur le rechargement? – flockofcode

+1

La première requête d'une page ne devrait par définition pas être une requête POST, car un POST est supposé envoyer des données saisies par l'utilisateur. Je pense que votre deuxième question est due au navigateur aidant l'utilisateur en saisissant automatiquement le texte qu'ils ont entré dans la zone de texte lors du rechargement. Vous pouvez voir exactement ce qui se passe avec Fiddler. Je vais modifier ma réponse pour inclure un lien vers cet outil incroyable. – davisoa

+0

je vous remercie pour votre aide – flockofcode

Questions connexes