2009-08-14 115 views
9

我想在代碼後面的運行時設置Iframe的HTML。從代碼隱藏中更改IFrames InnerHtml

在我的aspx頁面我有:

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

<br /> 

<iframe id="myIframe" runat="server" /> 
在後面的代碼

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

當我運行這....這回發,但不改變myIframe內容在所有... 我在做什麼錯?


我需要這樣做,因爲IM實現3D固定在我的結帳過程.. 基本上是:

1)客戶輸入信用卡詳細信息 2)形式提交,以支付網關檢查3D安全是必需的。如果是這樣,爲銀行的安全位置生成url來輸入信息 3)我創建一個POST請求到這個URL,它包含一個長期的安全令牌和一些其他信息位。我掌握了從這個POST請求返回的HTML,並且需要在iFrame中顯示它。

繼承人什麼文件說,要做到:

<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

我的猜測爲什麼iframe被選中,是因爲帖子響應中包含html頭部和body標籤 – mangokun 2009-08-14 14:10:07

+1

可能比無所事事更好的方式是從帖子回覆中提取必要的信息,而不是將整個內容轉儲爲內容 – mangokun 2009-08-14 14:12:29

回答

14

你可以試試這個:

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

或者也許這將工作太:

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

你不能改變的iframe innerHTML屬性。它根本沒有innerHTML屬性。嘗試使用RegisterStartupScript並使用document.write來更改iframe的內容,因爲它是一個窗口。

順便說一句,我認爲HTML標籤是更好的地方。

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

你需要做的是創建一個單獨的aspx頁面是空的,並且獲得在其自己的身體反應,並加載它,換句話說替代本身,像

mypage.aspx:

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

然後把該網頁烏爾iframe中...

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

簡單地說,IFRA我是一個客戶端窗口,你不能從服務器端引用它的身體作爲對象,它尚未加載!

或...您可以打開一個html文件,轉儲該響應,然後保存並關閉...該文件始終由您的iframe引用。使用文本流對象或文件系統對象等...

PS。我還沒有試過它

1

沒有iFrame的innerHTML屬性。但是,自HTML 5.0以來,有一個新的srcdoc屬性。http://www.w3schools.com/tags/tag_iframe.asp

值:HTML_code

說明:指定網頁的HTML內容在< IFRAME展示>

,你可以使用這樣的:

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