1
votes

ASP.NET et C #: MessageBox non affiché lorsqu'il est utilisé en combinaison avec Response.Redirect

Dans mon formulaire Web ASP.NET, je dois informer les utilisateurs que leurs commentaires ont été envoyés. J'ai l'intention de le faire en faisant cela dans mon code-behind:

protected void lblButton_Click(object sender, EventArgs e) 
{

  Response.Redirect(Request.RawUrl); //Refresh page 
  Messagebox("Feedback submitted. Click OK to go back.");
  return;
}

public void Messagebox(string xMessage)
{
  Response.Write("<script>alert('" + xMessage + "')</script>");
}

Cependant, lorsque j'exécute ceci, ma page est toujours actualisée sans que la boîte de message ne s'affiche.

Si j'échange Response.Direct avec Messagebox, rien ne change.

Qu'est-ce que je fais de mal?


2 commentaires

Pourquoi la boîte de message s'affiche-t-elle? Vous avez lancé une actualisation avant de pouvoir l'afficher. Échangez peut-être ces 2 lignes de code.


Rien n'a changé - question modifiée.


3 Réponses :


4
votes

Je pense que vous devez utiliser Response.Redirect (URL, false) dans votre code ..

protected void lblButton_Click(object sender, EventArgs e) 
{
Response.Redirect(Request.RawUrl,false); //Refresh page 
ScriptManager.RegisterClientScriptBlock((Page)(HttpContext.Current.Handler), typeof(Page), "alert", "javascript:alert('Feedback submitted. Click OK to go back.');", true);
return;
}

Response.Redirect (URL, false): Le le client est redirigé vers une nouvelle page et la page actuelle sur le serveur continuera à être traitée.

Response.Redirect (URL, true): Le client est redirigé vers une nouvelle page , mais le traitement de la page en cours est interrompu.

Encore une fois, le message ne s'affiche pas alors essayez d'utiliser ..... Javascript Alert ...

protected void lblButton_Click(object sender, EventArgs e) 
    {

      Response.Redirect(Request.RawUrl,false); //Refresh page 
      Messagebox("Feedback submitted. Click OK to go back.");
      return;
    }


0 commentaires

3
votes

L'alerte est spécifique à la page, donc même si la boîte de dialogue d'alerte s'affiche, elle disparaîtra dès que le client sera redirigé.


0 commentaires

1
votes

Suite à l'une des suggestions que j'ai reçues, j'ai fini par utiliser une page de confirmation avec un bouton OK qui est appelé à partir du fichier aspx:

<asp:Button runat="server" ID="btnSave" Click="btnSave_Click" Text="Save"
    OnClientClick="return confirm('Are you sure you want to do this thing?');"  />


0 commentaires