Использование фреймов в ASP.NET - PullRequest
19 голосов
/ 16 февраля 2011

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

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

Есть идеи?

Ответы [ 4 ]

28 голосов
/ 16 февраля 2011

попробуйте

<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");
}
7 голосов
/ 20 ноября 2014

Как насчет:

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

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

Если у вас есть проблемы с использованием этого элемента управления, вы можете посмотреть здесь .

7 голосов
/ 16 февраля 2011

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

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

И вы можете загрузитьURL в вашем iframe, который является a .aspx страницей.

Но - iframes не имеют ничего общего с механизмом ASP.net. Это элементы HTML, которые могут быть созданы для запуска server-сторона, но они, по существу, «немые» и неуправляемые / не связанные с механизмами ASP.Net. - не путать ContentPlaceholder с IFRAME

1012 * Кстати, использование фреймов остаются спорное - вам действительно нужноиспользовать один? Можете ли вы позволить себе негативные компромиссы, связанные с ними, например, отсутствие истории навигации ...?
6 голосов
/ 09 ноября 2012

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

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 />"));
...