2008-10-03 17 views
24

मैं कोड-पीछे aspx.cs फ़ाइल से IFRAME HTML नियंत्रण के लिए विशेषताओं को सेट करने का प्रयास कर रहा हूं।मैं ASP.NET में codebehind फ़ाइल से IFRAME तक कैसे पहुंच सकता हूं?

aspx फ़ाइल है:

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

और उसके बाद कोड-पीछे फ़ाइल में शामिल हैं:

मैं एक post कि कहते हैं आप का उपयोग गैर एएसपी नियंत्रण ढूंढने के लिए FindControl का उपयोग कर सकते में आए

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

} 

सिवाय इसके कि यह नियंत्रण नहीं ढूंढ रहा है, सामग्री Panel1 शून्य है।


अद्यतन 1

गाया एचटीएमएल को देखते हुए:

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

मैं करने के लिए बदल रहा है कोड-पीछे करने की कोशिश की:

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

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

लेकिन यह मदद नहीं की ।

मैं एक मास्टरपेज का उपयोग कर रहा हूं।


अद्यतन 2

को aspx फ़ाइल में बदलना:

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

भी मदद नहीं की


उत्तर

उत्तर स्पष्ट है, और मूल प्रश्न पूछने के योग्य भी है। आप aspx कोड है, तो:

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

और से iframe उपयोग करना चाहते कोड-पीछे फ़ाइल, तुम बस इसे उपयोग:

this.contentPanel1.Attributes["src"] = "http://www.stackoverflow.com"; 
+0

क्या आप मास्टर पेज का उपयोग कर रहे हैं? –

+0

क्यों हाँ, हाँ मैं हूं। –

+0

प्रस्तुत किए गए HTML (स्रोत देखें) को देखें और iFrame की रेंडर आईडी खोजें। अपने कोड में प्रयोग करें। हम इसे बाद में साफ़ कर सकते हैं, लेकिन बस कोशिश करें। –

उत्तर

11

तो आइफ्रेम पेज जहां कोड चल रहा है पर सीधे है, तो आप सीधे संदर्भित करने के लिए सक्षम होना चाहिए:


contentPanel1.Attribute = value; 

यदि नहीं (यह एक बच्चे के नियंत्रण में है, या masterpage) , आपको पृष्ठ के पदानुक्रम का एक अच्छा विचार चाहिए ... या FindControl() के एक पुनरावर्ती संस्करण को लिखने के ब्रूट-बल विधि का उपयोग करें।

+0

आप सही हैं। RyanFetz के रिकर्सिव खोज की तलाश करते समय मैंने बस अंधेरे से ठोकर खाई। यह.contentPanel1.Attributes ["src"] = "http://www.stackoverflow.com"; बस ठीक काम करता है! मुझे लगता है कि यह काम नहीं करेगा क्योंकि यह एएसपी नहीं है: iframe नियंत्रण। मुझे लगता है कि runat = सर्वर यह काम करता है? –

+1

हाँ, runat = सर्वर का उपयोग करके यह किसी प्रकार का सर्वर-साइड नियंत्रण बनाता है। – AaronSieb

0

लोड घटना के बाहर contentPanel1 instantiating का प्रयास करें; इसे कक्षा में वैश्विक रखें।

+0

कहां से कोई सुझाव? –

+0

यहां थोड़ी सी आवाज है - आमतौर पर इंस्टेंटिंग का अर्थ वास्तव में ऑब्जेक्ट इंस्टेंस बनाना है। वह वहां क्या कर रहा है केवल एक पृष्ठ विधि से मौजूदा वस्तु (जेनरेट कोड द्वारा तत्काल) का संदर्भ प्राप्त कर रहा है। –

1

का उपयोग कर

this.Master.FindControl ("कन्टैंट") की कोशिश करो। FindControl ("controlId")

बजाय।

0

FindControl विधि "नियंत्रण" के बाल नियंत्रण में दिखाई देती है जिस पर विधि निष्पादित की जाती है। नियंत्रण संग्रह को फिर से देखने का प्रयास करें।

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

वह जानता है कि यह कहां है; आपका समाधान एक फ्रिजन जैकहमेर है जहां एक टाइल हथौड़ा होगा। – Will

0

इसे आजमाएं।

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

एचटीएमएल कंट्रोल cpanel = (एचटीएमएल कंट्रोल) cplHolder.FindControl ("contentPanel1");

12

यह मेरे लिए काम करता है।

ASPX:

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

मैं आईडी के माध्यम से सीधे iframe उपयोग कर सकते हैं।

पीछे कोड:

ContentIframe.Attributes["src"] = "stackoverflow.com"; 
+0

यह वास्तव में जाने का रास्ता है! –

+0

और फ़ील्ड इस 'संरक्षित वैश्विक :: System.Web.UI.HtmlControls.HtmlGenericControl ContentIframe' की तरह होगा क्योंकि कोई इफ्रेम विशिष्ट वेबकंट्रोल –

0
<iframe id="yourIframe" clientIDMode="static" runat="server"></iframe> 

आप उन्हें अपने आइफ्रेम FindControl पद्धति का उपयोग करके खोजने के लिए सक्षम होना चाहिए।

सेटिंग clientIDMode से Static प्रतिपादन करते समय आपको नाम बदलने से रोकता है।

0

अपने सुझाव में से कोई भी मेरे लिए काम किया, यहां मेरे समाधान है:

add src="<%=_frame1%>" //to the iframe id="frame1" html control 
public string _frame1 = "http://www.google.com"; 
1

कहाँ अपने iframe एम्बेडेड है?

इस कोड को होने

<body> 

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

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

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

मैं iFrame1.Attributes["src"] सिर्फ iFrame1 करने के लिए और नहीं iFrame2 के साथ उपयोग कर सकते हैं।

वैकल्पिक रूप से, आप किसी भी तत्व के लिए अपने रूप में साथ उपयोग कर सकते हैं:

FindControl("iFrame2") as System.Web.UI.HtmlControls.HtmlGenericControl 
-1

aspx पेज

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

कोड के पीछे

this.fblikes.Attributes [ "src"] = "/productdetails/fblike.ashx";

बहुत आसान ....

+0

नहीं है मुझे नहीं पता ....... :( –

संबंधित मुद्दे