I am trying to set attributes for an IFRAME html control from the code-behind aspx.cs file.
I came across a post that says you can use FindControl to find the non-asp controls using:
The aspx file contains:
<iframe id="contentPanel1" runat="server" />
and then the code-behind file contains:
protected void Page_Load(object sender, EventArgs e)
{
HtmlControl contentPanel1 = (HtmlControl)this.FindControl("contentPanel1");
if (contentPanel1 != null)
contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";
}
Except that it's not finding the control, contentPanel1 is null.
Update 1
Looking at the rendered html:
<iframe id="ctl00_ContentPlaceHolder1_contentPanel1"></iframe>
i tried changing the code-behind to:
HtmlControl contentPanel1 = (HtmlControl)this.FindControl("ctl00_ContentPlaceHolder1_contentPanel1");
if (contentPanel1 != null)
contentPanel1.Attributes["src"] = "http://www.clis.com";
But it didn't help.
i am using a MasterPage.
Update 2
Changing the aspx file to:
<iframe id="contentPanel1" name="contentPanel1" runat="server" />
also didn't help
Answer
The answer is obvious, and unworthy of even asking the original question. If you have the aspx code:
<iframe id="contentPanel1" runat="server" />
and want to access the iframe from the code-behind file, you just access it:
this.contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";
If the iframe is directly on the page where the code is running, you should be able to reference it directly:
If not (it's in a child control, or the MasterPage), you'll need a good idea of the hierarchy of the page... Or use the brute-force method of writing a recursive version of FindControl().
Try using
instead.
Try instantiating contentPanel1 outside the Load event; keep it global to the class.
You should them be able to find your iframe using the findcontrol method.
setting
clientIDMode
toStatic
prevents you object from being renamed while rendering.None of your suggestions worked for me, here is my solution:
aspx page
Code behind
this.fblikes.Attributes["src"] = "/productdetails/fblike.ashx";
Very simple....