Использование iFrames в ASP.NET
У меня есть сайт asp.net с главной страницей, могу ли я использовать iframe
, чтобы мои страницы .aspx
загружались внутри iframes
. (Означает, что он не загрузит главную страницу)
Вроде бы мой iframe
будет contentplaceholder
или может быть contentplaceholder
внутри него?
Любые идеи?
Ответы
Ответ 1
попробуйте это
<iframe name="myIframe" id="myIframe" width="400px" height="400px" runat =server></iframe>
Выставить этот iframe в главной странице codebehind:
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");
}
Ответ 2
Вы можете думать о iframe как о встроенном окне браузера, который вы можете разместить на странице HTML, чтобы отобразить в нем другой URL. Этот URL-адрес может быть полностью отличным от вашего веб-сайта/приложения.
Вы можете поместить iframe на любую HTML-страницу, чтобы вы могли поместить его внутри владельца содержимого в веб-форму с главной страницей, и она будет отображаться с любым URL-адресом, который вы загружаете в него (через Javascript или С#, если вы включите ваш iframe на серверный элемент управления (runat='server'
) на последней странице HTML, которую ваша веб-форма создает по запросу.
И вы можете загрузить URL-адрес в свой iframe, который является страницей .aspx
.
Но - iframe не имеют никакого отношения к механизму ASP.net. Они представляют собой HTML-элементы, которые могут быть созданы для работы на стороне сервера, но они по сути "немыслимы" и неуправляемы/не связаны с механизмами ASP.Net - не путайте Contentplaceholder с iframe.
Кстати, использование фреймов остается спорным - действительно ли вы должны использовать один? Можете ли вы предоставить отрицательные компромиссы, связанные с ними, например. отсутствие истории навигации...?
Ответ 3
Как насчет:
<asp:HtmlIframe ID="yourIframe" runat="server" />
Поддерживается с .Net Framework 4.5
Если у вас есть проблемы с использованием этого элемента управления, вы можете посмотреть здесь.
Ответ 4
Другим вариантом является использование заполнителей.
Html:
<body>
<div id="root">
<asp:PlaceHolder ID="iframeDiv" runat="server"/>
</div>
</body>
С#
iframeDiv.Controls.Add(new LiteralControl("<iframe src=\"" + whatever.com + "\"></iframe><br />"));