2009-08-14 5 views
9

Sto provando a impostare l'HTML di un Iframe in fase di esecuzione, dal codice sottostante.Modifica di un IFrames InnerHtml da codebehind

Nella mia pagina aspx ho:

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

<br /> 

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

nel codice dietro:

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

Quando ho eseguito questo .... il postback, ma non cambia il contenuto myIframe a tutto ... Cosa sto facendo di sbagliato ??


ho bisogno di fare sicuro questo 3D, perché im attuazione nel mio processo di checkout .. fondamentalmente:

1) cliente entra dati della carta di credito 2) è presentata sotto forma, assegni con gateway di pagamento se 3d sicuro è richiesto. in tal caso, viene generato url per la posizione sicura delle banche per immettere le informazioni 3) creo una richiesta POST a questo URL, che contiene un token di sicurezza lungo e alcuni altri bit di informazioni. ottengo il codice HTML restituito da questa richiesta POST e devo visualizzarlo in un iFrame.

Heres ciò che dice la documentazione da fare:

<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

la mia ipotesi per cui iframe è stata scelta, è perché la risposta post contiene la testa e il corpo html tags – mangokun

+1

probabilmente un modo migliore di non fare nulla è estrarre le informazioni necessarie dalla risposta post piuttosto che scaricarne l'intero come contenuto – mangokun

risposta

14

Si può provare questo:

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

o forse questo funzionerà anche:

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

Non è possibile cambiare iframe proprietà innerHTML. Non ha alcuna proprietà innerHTML. Prova a RegisterStartupScript e usa document.write per modificare il contenuto dell'iframe poiché è una finestra.

A proposito, penso che il tag HTML sia il posto migliore per questo.

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

ciò che devi fare è creare una pagina aspx separata che è vuoto e che ottiene la risposta e lo carica nel proprio corpo, in altre parole sostituire se stesso, come

MyPage.aspx:

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

quindi posizionare la pagina all'interno ur iframe ...

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

In poche parole, l'IFRA io sono una finestra laterale del client, non puoi fare riferimento al suo corpo come oggetto dal lato server, non è ancora stato caricato!

OPPURE ... è possibile aprire un file html, eseguire il dump della risposta, quindi salvare e chiudere ... il file viene sempre referenziato dall'iframe. utilizzare oggetti flusso di testo, o filesystemobject o simili ...

PS. non ne ho provato nessuno

1

Non esiste un attributo innerHTML per un iFrame. Tuttavia, poiché HTML 5.0, è disponibile un nuovo attributo srcdoc.http://www.w3schools.com/tags/tag_iframe.asp

Valore: HTML_code

Descrizione: Specifica il contenuto HTML della pagina per mostrare nella < iframe>

che si poteva usare in questo modo:

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