2009-08-14 26 views
9

Tôi đang cố gắng đặt HTML của Iframe khi chạy, từ mã phía sau.Thay đổi một IFrames InnerHtml từ codebehind

Trong trang aspx của tôi tôi có:

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

<br /> 

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

trong các mã sau:

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

Khi tôi chạy này .... nó đăng tải trở lại, nhưng không làm thay đổi nội dung myIframe ở tất cả ... Tôi đang làm gì sai ??


tôi cần phải làm điều này vì 3D im thực hiện đảm bảo vào quy trình kiểm tra của tôi .. cơ bản:

1) khách hàng nhập thông tin thẻ tín dụng 2) mẫu được gửi, kiểm tra với cổng thanh toán nếu 3d an toàn là bắt buộc. nếu có, url được tạo cho các vị trí an toàn của ngân hàng để nhập thông tin 3) tôi tạo một yêu cầu POST tới url này, chứa một mã thông báo bảo mật dài và một vài thông tin khác. tôi nhận được mã HTML được trả lại từ yêu cầu POST này và cần hiển thị nó trong iFrame.

Heres những gì tài liệu nói làm:

<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

phỏng đoán của tôi tại sao khung nội tuyến được chọn, là do phản hồi bài đăng chứa đầu và phần tử html các thẻ – mangokun

+1

có thể là cách tốt hơn là không làm gì để trích xuất các thông tin cần thiết từ phản hồi bài chứ không phải là xóa toàn bộ nội dung – mangokun

Trả lời

14

Bạn có thể thử này:

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

hoặc có thể điều này sẽ làm việc quá:

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

Bạn không thể thay đổi iframe thuộc tính innerHTML. Nó không có thuộc tính innerHTML. Hãy thử RegisterStartupScript và sử dụng document.write để thay đổi nội dung của iframe vì nó là một cửa sổ.

Nhân tiện, tôi nghĩ thẻ HTML là nơi tốt hơn cho việc này.

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

những gì bạn cần làm là tạo ra một trang aspx riêng biệt đó là trống rỗng và được sự hưởng ứng và tải nó trong cơ thể của riêng mình, hay nói cách khác thay thế riêng của mình, giống như

MyPage.aspx:

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

sau đó đặt trang đó bên trong ur iframe ...

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

chỉ cần đặt, các IFRA Tôi là một cửa sổ phía khách hàng, bạn không thể tham chiếu cơ thể của nó như là một đối tượng từ phía máy chủ, nó vẫn chưa được tải!

HOẶC ... bạn có thể mở tệp html, kết xuất phản hồi rồi lưu và đóng ... tệp đó luôn được tham chiếu bởi iframe của bạn. sử dụng đối tượng Luồng văn bản hoặc hệ thống tệp hoặc các mục tương tự ...

PS. tôi chưa thử bất kỳ điều gì trong số đó

1

Không có thuộc tính innerHTML nào cho iFrame. Tuy nhiên, kể từ HTML 5.0, có một thuộc tính mới srcdoc.http://www.w3schools.com/tags/tag_iframe.asp

Value: HTML_code

Mô tả: Chỉ định nội dung HTML của trang để hiển thị trong < iframe>

Mà bạn có thể sử dụng như thế này:

protected void btnChange_Click(object sender, EventArgs e) 
{ 
    myIframe.Attributes["srcdoc"] = "<h1>Contents Changed</h1>"; 
} 
Các vấn đề liên quan