Comment puis-je accéder à une IFRAME à partir du fichier codebehind ASP.NET je ne sais pas.

j'essaie de définir les attributs d'un contrôle html IFRAME à partir du code-derrière aspx.cs fichier.

je suis tombé sur un post qui dit que vous pouvez utiliser FindControl pour trouver le non-asp contrôles à l'aide de:

Le fichier aspx contient:

<iframe id="contentPanel1" runat="server" />

et puis le fichier code-behind contient:

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

}

sauf qu'il ne trouve pas le contrôle, contentPanel1 est nul.


mise à Jour 1

en Regardant le rendu html:

<iframe id="ctl00_ContentPlaceHolder1_contentPanel1"></iframe>

j'ai tenté de changer le code-behind:

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

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

Mais il n'a pas aidé.

j'utilise une page principale.


mise à Jour 2

changer le fichier aspx en:

<iframe id="contentPanel1" name="contentPanel1" runat="server" />

n'a pas aidé


Réponse

la réponse est évidente, et indigne même de demander question d'origine. Si vous avez le code aspx:

<iframe id="contentPanel1" runat="server" />

et souhaitez accéder à l'iframe dans le code-behind de fichier, il vous suffit d'accéder:

this.contentPanel1.Attributes["src"] = "http://www.stackoverflow.com";
25
demandé sur Ian Boyd 2008-10-03 22:31:53

10 réponses

si l'iframe est directement sur la page où le code est en cours d'exécution, vous devriez pouvoir le référencer directement:


contentPanel1.Attribute = value;

si non (c'est dans le contrôle de l'enfant, ou la page principale), vous aurez besoin d'une bonne idée de la hiérarchie de la page... Ou utilisez la méthode brute-force pour écrire une version récursive de FindControl().

11
répondu AaronSieb 2008-10-03 18:48:16

ça marche pour moi.

ASPX:

<iframe id="ContentIframe" runat="server"></iframe>

je peux accéder à l'iframe directement via id.

Code Behind:

ContentIframe.Attributes["src"] = "stackoverflow.com";
12
répondu Mark Ibanez 2012-10-26 07:52:35

Essayez d'utiliser

c'.Maître.FindControl ("ContentId").FindControl ("controlId")

à la place.

1
répondu Joe Ratzer 2008-10-03 18:41:34

Où est votre iframe intégré?

ayant ce code

<body>

<iframe id="iFrame1" runat="server"></iframe>

<form id="form1" runat="server">

<div>
      <iframe id="iFrame2" runat="server"></iframe>
</div>
</form>

je peux accéder avec iFrame1.Attributes["src"] juste à iFrame1 et pas à iFrame2.

Alternativement, vous pouvez accéder à n'importe quel élément dans votre formulaire:

FindControl("iFrame2") as System.Web.UI.HtmlControls.HtmlGenericControl
1
répondu Jorge 2014-03-20 15:38:30

essayez instanciating contentPanel1 en dehors de L'événement Load; gardez-le global pour la classe.

0
répondu Ian Jacobs 2008-10-03 18:34:15

La méthode FindControl regarde dans les contrôles enfants de "contrôle", la méthode est exécutée. Essayez de regarder à travers la collection de contrôle récursivement.

    protected virtual Control FindControlRecursive(Control root, String id)
    {
        if (root.ID == id) { return root; }
        foreach (Control c in root.Controls)
        {
            Control t = FindControlRecursive(c, id);
            if (t != null)
            {
                return t;
            }
        }
        return null;
    }
0
répondu RyanFetz 2008-10-03 18:45:46

Essayez ceci.

ContentPlaceHolder cplHolder = (ContentPlaceHolder) this.CurrentMaster.FindControl ("contentMain");

htmlcontrol cpanel= (HtmlControl)cplHolder.FindControl ("contentPanel1");

0
répondu 2009-07-30 11:36:15
<iframe id="yourIframe" clientIDMode="static" runat="server"></iframe>

vous devriez être capable de trouver votre iframe en utilisant la méthode findcontrol.

clientIDModeStatic empêche l'objet d'être renommé pendant le rendu.

0
répondu Sedecimdies 2012-09-28 11:11:42

Aucune de vos suggestions a fonctionné pour moi, voici ma solution:

add src="<%=_frame1%>" //to the iframe id="frame1" html control
public string _frame1 = "http://www.google.com";
0
répondu andyc 2013-05-07 06:14:12

aspx page

<iframe id="fblikes" runat="server"></iframe>

Code derrière

ceci.fblikes.Attributs ["src"] = "/productdetails/fblike.ashx";

très simple....

-1
répondu aBnoRmaL 2017-11-26 16:47:53