Comment ouvrir la redirection de la page d'Iframe pour l'ouvrir dans la fenêtre parent dans ASP.NET?
J'ai un asp.net la page qui contient une Iframe intégré avec des données et un ImageButton. Sur ImageButton cliquez sur l'événement (côté serveur), j'ai la Réponse.Redirct:
Response.Redirect("results.aspx");
Ce toujours ouvrir les résultats.aspx en iframe. Je veux que les résultats.aspx doit toujours ouvrir dans la fenêtre parent. J'ai essayé ce qui suit, jusqu'à maintenant, mais aucune n'a fonctionné:
Response.Redirect("<script language='javascript'>self.parent.location='results.aspx';</script>");
Response.Redirect("javascript:parent.change_parent_url('results.aspx');");
Comme répondu par Rifk, j'ajoute le ClientScriptManager.
.aspx a cette entrée:
<asp:ImageButton ID="ImageButton_ok" ImageUrl="~/images/ok.gif"
OnClick="btnVerify_Click" OnClientClick="ValidateFields()"
runat="server" />
Code-behind dans Page_Load():
ClientScriptManager cs = Page.ClientScript;
StringBuilder myscript = new StringBuilder();
myscript.Append("<script type=\"text/javascript\"> function ValidateFields() {");
myscript.Append("self.parent.location='default.aspx';} </");
myscript.Append("script>");
cs.RegisterClientScriptBlock(this.GetType(), "ButtonClickScript", myscript.ToString());
btnVerify_Click a la logique métier principal. Comment vais-je arrêter de OnClientClick() à feu si ma logique d'entreprise échoue? ou, comment puis-je le feu quand le serveur le code est exécuté avec succès?
OriginalL'auteur Sri Reddy | 2011-02-16
Vous devez vous connecter pour publier un commentaire.
Réponse.Redirection n'a d'impact que la page dans l'iFrame si c'est la page qui est en train de faire la redirection côté serveur. Vous avez besoin d'exécuter du code javascript à l'intérieur de cette iFrame qui va rediriger les parents, comme vous l'avez dans votre deuxième exemple. Afin d'exécuter le script, vous ne devriez pas être à l'aide de la Réponse.Redirect(), mais vous devez plutôt être l'enregistrement d'un script client.
Voir le lien suivant pour comment enregistrer un script client dans votre code ASP.Net 2.0 -
À l'aide de Javascript avec ASP.Net 2.0
Par exemple, vous ajoutez quelque chose de semblable à ce à la fin de votre événement qui gère le ImageButton Cliquez sur:
Sur votre image, bouton, vous pouvez régler la OnClientClick propriété pour exécuter une méthode javascript, comme expliqué ici: w3schools.com/aspnet/.... Votre méthode javascript aurait alors la déclaration que vous avez fournies ci-dessus tels que: "l'auto.parent.location='résultats.aspx';".
Rifk, cela rendra la OnClientClick (côté client code) de fonctionner sans attendre mon traitement de OnClick (côté serveur). droit? Nous avons un peu de logique métier dans le OnClick qui doivent être exécutées avant la redirection. Merci pour le temps et l'explication.
Dans ce cas, vous aurez envie de faire de la Page.ClientScript.RegisterClientScriptBlock() à la fin de l'événement qui s'occupe de votre ImageButton événement click sur le serveur.
btnVerify_Click a la logique métier principal. Comment vais-je arrêter de OnClientClick à feu si ma logique d'entreprise échoue? ou, comment puis-je le feu du code JS uniquement lorsque le serveur le code est exécuté avec succès?
OriginalL'auteur Dave Brace
J'ai un asp.net la page qui contient une Iframe intégré avec des données et un boutons. Sur l'événement clic du bouton (côté serveur), j'ai la Réponse.Redirct, mais j'ai besoin de fermer l'Iframe et de chargement de la page parent.l'ajout de l'mentionnés ci-dessous script a résolu le problème.
Sa ne fonctionne pas dans Internet Explorer
OriginalL'auteur praveen
Grâce Rifk pour la solution. Voici le code pour ceux qui ont le même problème:
Dans le fichier aspx, j'ai défini une nouvelle JS fonction de Redirection (Redirection). ValidateFields() la fonction va faire du côté client validations.
dans le code derrière, je code très simple qui enregistre clientscriptblock après avoir fait un certain côté serveur validations. J'ai exigé que la redirection se produire que si le côté serveur de validation est réussie.
OriginalL'auteur Sri Reddy
Vous pouvez essayer ceci:
Ce qui concerne.
OriginalL'auteur user3334463
OriginalL'auteur mjb
Si vous voulez juste pour ouvrir un site web directement sur la page actuelle avec votre iframe (pas de nouvel onglet ou une fenêtre), alors vous n'avez pas besoin de code-behind.
ie:
et une seule ligne de script Java bout de code dans votre page ASPX...
OriginalL'auteur Fandango68