如何从ASP.NET中的代码隐藏文件访问IFRAME?

Ian*_*oyd 26 asp.net iframe

我试图从代码隐藏的aspx.cs文件中设置IFRAME html控件的属性.

我遇到一个帖子,说你可以使用FindControl来查找非asp控件:

aspx文件包含:

<iframe id="contentPanel1" runat="server" />
Run Code Online (Sandbox Code Playgroud)

然后代码隐藏文件包含:

protected void Page_Load(object sender, EventArgs e)
{
    HtmlControl contentPanel1 = (HtmlControl)this.FindControl("contentPanel1");
    if (contentPanel1 != null)
        contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";

}
Run Code Online (Sandbox Code Playgroud)

除了找不到控件之外,contentPanel1为null.


更新1

看着渲染的html:

<iframe id="ctl00_ContentPlaceHolder1_contentPanel1"></iframe>
Run Code Online (Sandbox Code Playgroud)

我尝试将代码更改为:

HtmlControl contentPanel1 = (HtmlControl)this.FindControl("ctl00_ContentPlaceHolder1_contentPanel1");

if (contentPanel1 != null)
    contentPanel1.Attributes["src"] = "http://www.clis.com";
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

我正在使用MasterPage.


更新2

将aspx文件更改为:

<iframe id="contentPanel1" name="contentPanel1" runat="server" />
Run Code Online (Sandbox Code Playgroud)

也没有帮助


回答

答案很明显,甚至不敢问原问题.如果你有aspx代码:

<iframe id="contentPanel1" runat="server" />
Run Code Online (Sandbox Code Playgroud)

并且想要从代码隐藏文件中访问iframe,您只需访问它:

this.contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";
Run Code Online (Sandbox Code Playgroud)

Aar*_*ieb 12

如果iframe直接位于运行代码的页面上,您应该可以直接引用它:


contentPanel1.Attribute = value;
Run Code Online (Sandbox Code Playgroud)

如果不是(它在子控件或MasterPage中),您需要对页面的层次结构有一个很好的了解...或者使用强制方法编写FindControl()的递归版本.


小智 12

这适合我.

ASPX:

<iframe id="ContentIframe" runat="server"></iframe>
Run Code Online (Sandbox Code Playgroud)

我可以通过id直接访问iframe.

代码背后:

ContentIframe.Attributes["src"] = "stackoverflow.com";
Run Code Online (Sandbox Code Playgroud)