Как реагировать в классе кода позади ASP.NET, когда гиперссылка нажимается внутри IFrame страницы? - PullRequest
0 голосов
/ 06 октября 2010

У меня есть страница ASP.Net, содержащая IFrame.В IFrame я загружаю HTML-документ.Когда пользователь нажимает гиперссылку в содержимом IFrame, мне требуется обратный вызов в классе code-behind страницы ASP.Net.

Я полагаю, что для этого мне нужен Ajaxно я не совсем уверен, что мне нужно делать.Не могли бы вы дать мне несколько советов?

Кстати, я довольно новичок в ASP.Net.

Спасибо

Ответы [ 3 ]

0 голосов
/ 06 октября 2010

Многое зависит от того, что именно вы хотите сделать конкретно.

Проблема, с которой вы столкнулись, заключается в том, что DOM страницы в iframe, по-видимому, не находится в DOMвызывающая страница.Все, что видит страница вызова, это тег iframe в виде закрытого тега, подобного тегу изображения.Некоторые браузеры обнаруживают щелчок внутри iframe, вложенного в DIV, как щелчок в div, поэтому у вас есть

<DIV id="iframediv">
  <Iframe blah...>
</DIV>

, и тогда вы можете использовать jQuery или аналогичный для обнаружения щелчка внутри iframediv и делатьstuff.

Реальным решением было бы попытаться не использовать iframe, поскольку, как я уже сказал, даже это решение не обязательно окупится.Я могу вспомнить хотя бы один сценарий, когда использование iframe не является вариантом, поэтому я оставлю это так.

Кроме того, предложения Виллема также кажутся обоснованными.

0 голосов
/ 12 ноября 2010

В конце концов я написал контрольный расширитель для IFrame.Control Extender получает ссылки, содержащиеся в IFrame, через следующий Javascript:

var frame = this.get_element();
var links = frame.contentWindow.document.getElementsByTagName("a");

Затем я просто присоединяю обработчик события, который реагирует на событие щелчка каждой ссылки.Обработчик событий вызывает сторону ASP.Net через службу WCF.

Это не сложно сделать, если вы знакомы с различными технологиями.

0 голосов
/ 06 октября 2010

Поскольку html-документ не является страницей aspx, он не сможет вызвать какой-либо код позади. Если вы можете изменить страницу в iframe, сделайте ее страницей aspx и обрабатывайте нажатие на кнопку LinkButton, как если бы вы делали иначе.

Другой вариант - изменить ссылку на html-странице, чтобы она вызывала пользовательскую страницу aspx, которая отвечает вашим потребностям, но перенаправляет html-страницу на новую страницу aspx.

Или действительно измените ссылку, чтобы вызывать веб-сервис через javascript (XMLHttpRequest), и дайте этому веб-сервису делать то, что вы хотели сделать в коде позади.

...