Question

J'essaie de définir le HTML d'un Iframe au moment de l'exécution, à partir du code derrière.

Dans ma page aspx j'ai :

<asp:Button ID="btnChange" runat="server" Text="Change iframe content" 
onclick="btnChange_Click" />

<br />

<iframe id="myIframe" runat="server" />

dans le code derrière :

protected void btnChange_Click(object sender, EventArgs e)
{
    myIframe.InnerHtml = "<h1>Contents Changed</h1>";
}

Quand je lance ça....il publie, mais ne change pas du tout le contenu de myIframe...Qu'est-ce que je fais mal??


Je dois le faire car j'implémente 3D Secure dans mon processus de paiement.essentiellement:

1) Le client entre les détails de la carte de crédit 2) le formulaire est soumis, chèques avec la passerelle de paiement si 3D sécurisé est requis.Dans l'affirmative, l'URL est générée pour l'emplacement sécurisé des banques pour entrer des informations 3) Je crée une demande de poste à cette URL, qui contient un long jeton de sécurité et quelques autres informations.je récupère le code HTML renvoyé par cette requête POST et je dois l'afficher dans un iFrame.

Voici ce que la documentation dit de faire :

<html>
<head>
<title>Please Authenticate</title>
</head>
<body onload="OnLoadEvent();">
<form name="downloadForm" action="https://mybank.com/vbyv/verify" method="POST">
<input type="hidden" name="PaReq" value="AAABBBBCCCCHHHHHH=">
<input type="hidden" name="TermUrl" value="https:// www. MyWidgits.Com/next.cgi">
<input type="hidden" name="MD" value="200304012012a">
</form>

<script language="Javascript"> <!-- function OnLoadEvent(){ document.downloadForm.target = "ACSframe"; document.downloadForm.submit(); } //--> </script>

<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE -->
<iframe src="blank.htm" name="ACSframe" width="390" height="450" frameborder="0">
</iframe>
<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE -->
</body>
</html>
Était-ce utile?

La solution

Vous pouvez essayer ceci :

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["src"] = "pathtofilewith.html"
}

ou peut-être que cela fonctionnera aussi :

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["innerHTML"] = "htmlgoeshere"
}

Autres conseils

Il n'y a pas d'attribut innerHTML pour un iFrame.Cependant, depuis HTML 5.0, il existe un nouveau srcdoc attribut. http://www.w3schools.com/tags/tag_iframe.asp

Valeur: Code HTML

Description:Spécifie le contenu HTML de la page à afficher dans le < iframe >

Que vous pourriez utiliser comme ceci :

protected void btnChange_Click(object sender, EventArgs e)
{
    myIframe.Attributes["srcdoc"] = "<h1>Contents Changed</h1>";
}

Vous ne pouvez pas modifier la propriété iframe innerHTML.Il n’a pas du tout de propriété innerHTML.Essayez de RegisterStartupScript et utilisez document.write pour modifier le contenu de l'iframe puisqu'il s'agit d'une fenêtre.

Soit dit en passant, je pense que la balise HTML est un meilleur endroit pour cela.

<asp:Button ID="btnChange" runat="server" Text="Change iframe content" onclick="btnChange_Click" />
<br />
<asp:Literal id="myIframe" runat="server" />

in the code behind:

protected void btnChange_Click(object sender, EventArgs e){
    myIframe.Text = "<h1>Contents Changed</h1>";
}

ce que vous devez faire est de créer une page ASPX séparée qui est vide et qui obtient la réponse et la charge dans son propre corps, en d'autres termes se remplace, comme

ma page.aspx :

<%@ Page contentType="text/html" %>
//... using your namespace that contains the required functionality
<% Response.Write(MyObject.CreateBody()) %>

puis placez cette page dans votre iframe...

<iframe src="mypage.aspx" ... />

en termes simples, l'iframe est une fenêtre côté client, vous ne pouvez pas référencer son corps en tant qu'objet côté serveur, il n'a pas encore été chargé !

OU...vous pouvez ouvrir un fichier html, vider la réponse puis enregistrer et fermer...ce fichier est toujours référencé par votre iframe.utilisez des objets de flux de texte, ou un objet de système de fichiers ou similaire...

PS.je n'ai rien essayé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top