Использование iFrames в ASP.NET

19

У меня есть сайт asp.net с главной страницей, могу ли я использовать iframe , поэтому мои .aspx страницы будут загружаться внутри iframes . (Означает, что он не загрузит главную страницу)

Вроде бы мой iframe будет contentplaceholder или, может быть, contentplaceholder будет внутри него?

Любые идеи?

    
задан Or Betzalel 16.02.2011 в 11:10
источник
  • @Rohit - почему вы выполняете эти бессмысленные изменения? –  5arx 25.07.2013 в 13:12

4 ответа

24

попробуйте это

<iframe name="myIframe" id="myIframe" width="400px" height="400px" runat =server></iframe>

Вывести этот iframe в код главной страницы:

public HtmlControl iframe
{
get
{
return this.myIframe;
}
}

Добавьте директиву MasterType для страницы содержимого на строго типизированную главную страницу.

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits=_Default" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPage.master" %>

В коде

protected void Page_Load(object sender, EventArgs e)
{
this.Master.iframe.Attributes.Add("src", "some.aspx");
}
    
ответ дан santosh singh 16.02.2011 в 11:16
источник
  • +1 для директивы MasterType –  Fanda 12.06.2014 в 16:02
  • Обратите внимание, что это приведет к предупреждению HTML5 Validation, поскольку требуется атрибут src. –  mbomb007 24.08.2016 в 18:48
7

Вы можете думать о iframe как о встроенном окне браузера, который вы можете разместить на странице HTML, чтобы отобразить в нем другой URL. Этот URL-адрес может быть полностью отличным от вашего веб-сайта / приложения.

Вы можете поместить iframe на любую HTML-страницу, чтобы вы могли поместить его внутри владельца содержимого в веб-форму с главной страницей, и она будет отображаться с любым URL-адресом, который вы загружаете в него (через Javascript или C #, если вы включите ваш iframe на серверный элемент управления ( runat='server' ) на последней HTML-странице, которую создает ваша веб-форма по запросу.

И вы можете загрузить URL-адрес в свой iframe, чтобы была на странице .aspx .

Но - iframe не имеют никакого отношения к механизму ASP.net. Они представляют собой HTML-элементы, которые могут быть созданы для работы на стороне сервера, но они по сути «немыслимы» и неуправляемы / не связаны с механизмами ASP.Net - не путайте Contentplaceholder с iframe.

Кстати, использование фреймов остается спорным - действительно ли вы должны использовать один? Можете ли вы предоставить отрицательные компромиссы, связанные с ними, например. отсутствие истории навигации ...?

    
ответ дан 5arx 16.02.2011 в 11:17
источник
  • +1: просто для того, чтобы прояснить одну вещь для ОП. Если страница ссылается на главную страницу, тогда главная страница будет загружаться независимо от способа доступа к странице. Единственные способы, с помощью которых выполняется выполнение главной страницы, состоит в том, чтобы: 1) полностью удалить ссылку на ведущего, 2) изменить ссылку на ведущего, который не имеет всего того же кода за время разработки, или 3) изменить мастер ссылку во время выполнения в методе preinit страницы для какого-либо другого мастера. –  NotMe 16.02.2011 в 18:13
7

Как насчет:

<asp:HtmlIframe ID="yourIframe" runat="server" />

Поддерживается с .Net Framework 4.5

Если у вас есть проблемы с использованием этого элемента управления, вы можете посмотреть ответ дан Philipp Hofmann 20.11.2014 в 15:00

источник
6

Другим вариантом является использование заполнителей.

Html:

<body>
   <div id="root">
      <asp:PlaceHolder ID="iframeDiv" runat="server"/>
   </div>
</body>

C #

iframeDiv.Controls.Add(new LiteralControl("<iframe src=\"" + whatever.com + "\"></iframe><br />"));
    
ответ дан owen gerig 08.11.2012 в 21:53
источник