2009-08-14 9 views
9

J'essaie de définir le code HTML d'un Iframe à l'exécution, à partir du code derrière.Modification d'un IFrames InnerHtml à partir de codebehind

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 sous-jacent:

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

Quand je lance ce .... il affiche en arrière, mais ne change pas le contenu de MyIframe du tout ... Qu'est-ce que je fais de mal ??


que je dois faire cela parce que im la mise en œuvre processus dans mon paiement sécurisé 3D .. essentiellement:

1) Le client entre carte de crédit 2) Le formulaire est soumis, les contrôles avec la passerelle de paiement si 3d sécurisé est requis. si c'est le cas, l'url est générée pour que l'emplacement sécurisé des banques saisisse les informations 3) je crée une requête POST à ​​cette URL, qui contient un jeton de sécurité longue, et quelques autres bits d'information. Je récupère le code HTML renvoyé par cette requête POST et je dois l'afficher dans un iFrame.

Voici ce que dit la documentation à 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> 
+0

ma conjecture pourquoi iframe est choisi, est parce que la réponse post contient html tête et le corps tags – mangokun

+1

probablement un meilleur moyen que de ne rien faire est d'extraire les informations nécessaires de la réponse post plutôt que de dumping tout comme le contenu – mangokun

Répondre

14

Vous pouvez essayer ceci:

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

ou peut-être cela fonctionnera aussi:

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

Vous ne pouvez pas changer iframe propriété innerHTML. Il n'a pas de propriété innerHTML du tout. Essayez RegisterStartupScript et utilisez document.write pour changer le contenu de l'iframe puisqu'il s'agit d'une fenêtre. Par ailleurs, je pense que le tag HTML est le meilleur endroit pour cela.

0
<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>"; 
} 
0

ce que vous devez faire est de créer une page séparée ASPX qui est vide et qui obtient la réponse et la charge dans son propre corps, autrement dit remplacer lui-même, comme

MyPage.aspx:

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

puis placez cette page dans ur iframe ...

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

simplement, la IFRA moi est une fenêtre côté client, vous ne pouvez pas référencer son corps comme un objet du côté serveur, il n'a pas encore été chargé! OU ... vous pouvez ouvrir un fichier html, vider la réponse puis sauvegarder et fermer ... ce fichier est toujours référencé par votre iframe. utiliser des objets de flux de texte ou un objet de système de fichiers ou similaire ...

PS. Je n'ai rien essayé

1

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

Valeur: HTML_code

Description: Indique le contenu HTML de la page pour afficher dans la < iframe>

que vous pourriez utiliser comme ceci:

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