2009-05-26 6 views
4

Chaque fois que je teste le IsPostBack dans PageLoad() false est renvoyé, qu'il y ait ou non publication de données. Ma première réaction a été de vérifier si la balise runat = "server" manquait dans le formulaire ou dans le bouton submit. Cependant, ils ont tous été ajoutés et la page WriteEmail.aspx renvoie toujours false pour IsPostBack. J'ai également essayé d'utiliser IsCrossPagePostBack à la place de IsPostBack.IsPostBack renvoie toujours la valeur false

ListInstructors.aspx:

<form runat="server" method="post" action="WriteEmail.aspx"> 
     ... 
     <input type="submit" id="writeEmail" value="Write Email" runat="server" /> 
</form> 

WriteEmail.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Response.Redirect("ListInstructors.aspx"); 
    } 
} 

Répondre

13

post = publication. Une publication est lorsque vous postez à la même page. L'action sur votre formulaire est affichée sur une page nouvelle.

Il semble que tout ce que vous faites est d'utiliser la page WriteEmail.aspx pour envoyer un message, puis revenir là où vous étiez juste. Vous n'avez même pas affiché un formulaire pour collecter le texte là-bas. C'est une ... ASP-ish classique ... façon de gérer les choses.

À la place, placez le code que vous utilisez pour envoyer un message dans une classe distincte de classe et, si nécessaire, placez la classe dans le dossier App_Code. Changez également le bouton de soumission en un <asp:button ... /> Ensuite, vous pouvez simplement l'appeler le code de l'événement Click du serveur pour votre bouton et ne laissez jamais votre page ListInstructors.aspx.


En réponse à votre commentaire: Non De MSDN:

... faire une demande sur plusieurs pages en attribuant une URL de la page à la propriété PostBackUrl d'un bouton de commande qui implémente l'IButtonControl interface.

+0

Si IsCrossPagePostBack return true pour les messages à travers les pages? –

+0

Seulement si référencé de la page précédente. Jetez un coup d'oeil-voir à ce lien pour un peu plus d'informations http://www.alexthissen.nl/blogs/main/archive/2006/09/13/beware-the-iscrosspagepostback-property.aspx –

+0

J'ai enlevé quelques du code dans ma question pour le rendre plus lisible. Il existe en fait une forme dans laquelle un courriel de masse peut être écrit. Merci pour le conseil. Cependant, tester Request ["writeEmail"] (le bouton submit), devrait fonctionner correctement ou y a-t-il un meilleur moyen. Cependant, je suis toujours curieux de savoir à quoi sert le IsCrossPagePostBack. –

2

Le IsPostBack n'est pas vrai car le formulaire n'est pas envoyé à partir de la page WriteEmail.aspx; soumettre un formulaire de la même page est ce qui provoque un PostBack. Si vous avez envoyé le formulaire depuis la page WriteEmail.aspx, ce serait un PostBack; comme c'est, c'est juste un poste.

Vous trouverez peut-être cette référence MSDN à être utile:

http://msdn.microsoft.com/en-us/library/ms178141.aspx

Questions connexes