2012-11-16 9 views
5

में वेबकंट्रोल चिह्नित करने योग्य गुणों का उपयोग यहां मेरा कस्टम नियंत्रण है। यह वेबकंट्रोल क्लास से [ऊंचाई] संपत्ति प्राप्त करता है। मैं इसे अन्य गुणों की गणना के लिए कन्स्ट्रक्टर में एक्सेस करना चाहता हूं। लेकिन इसका मान हमेशा होता है 0. कोई विचार?कन्स्ट्रक्टर एएसपी नेट

public class MyControl : WebControl, IScriptControl 
{ 

    public MyControl() 
    { 
     AnotherProperty = Calculate(Height); 
     ....... 
    } 

मेरी aspx

 <hp:MyControl Height = "31px" .... /> 

उत्तर

3

मार्कअप मूल्यों अपने नियंत्रण के निर्माता में उपलब्ध नहीं हैं, लेकिन वे अपने नियंत्रण के OnInit घटना के भीतर से उपलब्ध हैं।

protected override void OnInit(EventArgs e) 
{ 
    // has value even before the base OnInit() method in called 
    var height = base.Height; 

    base.OnInit(e); 
} 
+1

लेकिन मैं GetScriptDescriptors() विधि में ऊंचाई तक कैसे पहुंच सकता हूं? –

+0

क्या आपका मतलब है कि मुझे ऊंचाई को अन्य चर में सहेजना चाहिए? यह.यू = आधार। हाइट; –

+0

मैं पूरी तरह से अनुसरण नहीं कर रहा हूं जो आप करने की कोशिश कर रहे हैं और 'IScriptControl' इंटरफेस के साथ कोई परिचितता नहीं है। – andleer

1

रूप @andleer कहा मार्कअप नियंत्रण के निर्माता में अभी तक पढ़ा नहीं किया गया है, इसलिए किसी भी गुण मान मार्कअप में निर्दिष्ट कर रहे हैं निर्माता में उपलब्ध नहीं हैं। मांग पर किसी अन्य संपत्ति की गणना करें जब यह उपयोग किया जा रहा है और सुनिश्चित करें कि आप ऑनइनिट से पहले उपयोग नहीं करते हैं:

private int fAnotherPropertyCalculated = false; 
private int fAnotherProperty; 
public int AnotherProperty 
{ 
    get 
    { 
    if (!fAnotherPropertyCalculated) 
    { 
     fAnotherProperty = Calculate(Height); 
     fAnotherPropertyCalculated = true; 
    } 
    return fAnotherProperty; 
    } 
} 
संबंधित मुद्दे