我试图从代码隐藏的aspx.cs文件中设置IFRAME html控件的属性.
我遇到一个帖子,说你可以使用FindControl来查找非asp控件:
aspx文件包含:
然后代码隐藏文件包含:
protected void Page_Load(object sender, EventArgs e) { HtmlControl contentPanel1 = (HtmlControl)this.FindControl("contentPanel1"); if (contentPanel1 != null) contentPanel1.Attributes["src"] = "http://www.stackoverflow.com"; }
除了找不到控件之外,contentPanel1为null.
更新1
看着渲染的html:
我尝试将代码更改为:
HtmlControl contentPanel1 = (HtmlControl)this.FindControl("ctl00_ContentPlaceHolder1_contentPanel1"); if (contentPanel1 != null) contentPanel1.Attributes["src"] = "http://www.clis.com";
但它没有帮助.
我正在使用MasterPage.
更新2
将aspx文件更改为:
也没有帮助
回答
答案很明显,甚至不敢问原问题.如果你有aspx代码:
并且想要从代码隐藏文件中访问iframe,您只需访问它:
this.contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";
AaronSieb.. 12
如果iframe直接位于运行代码的页面上,您应该可以直接引用它:
contentPanel1.Attribute = value;
如果不是(它在子控件或MasterPage中),您需要对页面的层次结构有一个很好的了解...或者使用强制方法编写FindControl()的递归版本.
如果iframe直接位于运行代码的页面上,您应该可以直接引用它:
contentPanel1.Attribute = value;
如果不是(它在子控件或MasterPage中),您需要对页面的层次结构有一个很好的了解...或者使用强制方法编写FindControl()的递归版本.
这适合我.
ASPX:
我可以通过id直接访问iframe.
代码背后:
ContentIframe.Attributes["src"] = "stackoverflow.com";