Изменение IFrames InnerHtml от codebehind

Я пытаюсь установить HTML-код iframe во время выполнения, начиная с кода.

На моей странице 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 вообще... Что я делаю неправильно?


Мне нужно сделать это, потому что я внедряю 3D в мой процесс оформления заказа. в основном:

1) клиент вводит данные кредитной карты 2) отправляется, проверяется с помощью платежного шлюза, если требуется 3d-защита. если это так, то URL-адрес создается для безопасного доступа банков для ввода информации 3) Я создаю запрос POST для этого URL-адреса, который содержит длинный токен безопасности и несколько других бит информации. я получаю HTML, возвращенный из этого запроса POST, и должен отображать его в 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>
9
задан Alex 14 авг. '09 в 16:12
источник поделиться

5 ответов

Вы можете попробовать следующее:

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"
}
14
ответ дан Mr. Smith 14 авг. '09 в 16:43
источник поделиться

Нет атрибута innerHTML для iFrame. Однако с 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>";
}
1
ответ дан P-L 03 июня '14 в 21:14
источник поделиться

Вы не можете изменить свойство iframe innerHTML. У него вообще нет свойства innerHTML. Попробуйте RegisterStartupScript и используйте document.write, чтобы изменить содержимое iframe, так как это окно.

Кстати, я думаю, что HTML-тег лучше для этого.

0
ответ дан Emrah GOZCU 14 авг. '09 в 16:59
источник поделиться
<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
ответ дан mangokun 14 авг. '09 в 17:08
источник поделиться

то, что вам нужно сделать, это создать отдельную страницу aspx, которая пуста, и которая получает ответ и загружает его в своем собственном теле, другими словами заменяет себя, например

mypage.aspx:

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

затем поместите эту страницу в ur iframe...

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

просто положить, iframe - это окно на стороне клиента, вы не можете ссылаться на его тело как на объект со стороны сервера, он еще не загружен!

ИЛИ... вы можете открыть html файл, сбросить ответ, затем сохранить и закрыть... этот файл всегда ссылается на ваш iframe. использовать объекты текстового потока, или файл файловой системы или тому подобное...

PS. я не пробовал ничего из этого

0
ответ дан Ayyash 28 окт. '09 в 5:47
источник поделиться

Другие вопросы по меткам