2012-01-06 12 views
20

मेरे पास एक सप्ताह पहले एक साक्षात्कार था और एएसपी.NET में ऑनइनिट और ऑनलोड के बीच अंतर क्या था? मुझे कोई सुराग नहीं था और मुझे नेट पर कोई आसान जवाब नहीं मिला है, तो क्या कोई जल्दी और सरल समझा सकता है कि दोनों के बीच क्या अंतर है? (मुझे जो मिला वह यह था कि जीवन चक्र में अंतर कुछ था)।अंतर ऑनइन और ऑनलोड?

+2

बहुत बुरा महसूस न करें। मैं नियमित रूप से "वरिष्ठ" एएसपी.नेट डेवलपर्स के लिए साक्षात्कार आयोजित करता हूं, और उनमें से केवल कुछ ही पृष्ठ जीवन चक्र को समझते हैं। – RickNZ

+0

हाँ मुझे पता है (और मैंने अभी 5 महीने पहले अपना "कैरियर" शुरू किया था) लेकिन मेरे पास इस सवाल के बारे में कुछ था कि मुझे जवाब जानना चाहिए। और साक्षात्कार के बाद मैं वास्तव में दोनों के बीच का अंतर समझना चाहता था, लेकिन अब तक मुझे नेट पर एक सरल जवाब नहीं मिला;) ty – dg90

+0

पेज/मास्टरपेज/नियंत्रण जीवन चक्र मुझे रोता है :( –

उत्तर

18

आपको ASP.NET page lifecycle पर पढ़ने की आवश्यकता है।

OnInit जीवन चक्र में पहले होता है - देखें कि राज्य में बदलाव अभी तक नहीं किए गए हैं और इसकी ट्रैकिंग चालू नहीं हुई है।

+3

ठीक है जो अधिक बताता है, लेकिन मुझे नहीं पता कि दृश्य राज्य परिवर्तनों को लोड करने से पहले मुझे कुछ क्यों करना चाहिए। क्या आप एक उदाहरण दे सकते हैं? इससे मुझे यह समझना आसान हो जाएगा कि यह उपयोगी क्यों है .. – dg90

+4

@daageu - अगर आपको नियंत्रण शुरू करने की आवश्यकता है , आपको यह करना चाहिए। यह गतिशील नियंत्रणों को फिर से बनाने का सबसे अच्छा समय भी है - अन्यथा उनके व्यूस्टेट में परिवर्तन स्वचालित रूप से दिखाई नहीं देंगे। – Oded

+0

आह संभोग! अब हम बात कर रहे हैं;) जानकारी के लिए धन्यवाद। – dg90

5

Page_InitPage_Load से पहले उठाया गया है। Page_Init कोड के लिए एक अच्छी जगह है जिसे आप आगे बढ़ने से पहले निष्पादित करना चाहते हैं जैसे ईवेंट ईवेंट को लोड ईवेंट में संलग्न करना।

इस घटना में नियंत्रणों तक पहुंच नहीं करना बेहतर है क्योंकि आपको गारंटी नहीं है कि वे बनाए गए हैं।

पेज_लोड कोड को स्टोर करने के लिए एक अच्छी जगह है जहां आप मूल्यों को प्रारंभ करते हैं और पृष्ठ के लिए विशिष्ट नियंत्रण रखते हैं क्योंकि आप जानते हैं कि इस बिंदु पर नियंत्रण मौजूद हैं और उपलब्ध हैं।

आप से आप अपने ऐप्स

+3

एक लिंक के बजाय, पृष्ठ का सारांश पोस्ट क्यों न करें, इसलिए सभी को क्लिक करना नहीं है? – Oded

+1

@ ओडेड: टिप्पणी के लिए धन्यवाद, मैंने जवाब अपडेट किया :) –

+0

सारांश के लिए धन्यवाद! बहुत मदद की। – dg90

0

दोनों Control वर्ग के इन तरीकों के बहुमत के लिए Page_Init में होगा Page_Load में एक बहुत अधिक कोड आ जाएँगे ASP.NET द्वारा लागू कर रहे हैं। OnInit() विधि Init ईवेंट बढ़ाती है और OnLoad() विधि Load ईवेंट बढ़ाती है।

+3

हाँ, मुझे यह पता था, लेकिन मैं दोनों के बीच का अंतर और एक उदाहरण के बारे में समझना चाहता हूं जब मुझे इनिट का उपयोग करना चाहिए और जब ऑनलोड – dg90

+0

@daageu - कृपया पढ़ें कि एमएसडीएन आलेख (ओडेड द्वारा पोस्ट किया गया) – adatapost

23

OnInit (Init ईवेंट) सभी नियंत्रण शुरू होने के बाद होता है, लेकिन ViewState ट्रैकिंग सक्षम होने से पहले होता है। इसे नीचे-अप कहा जाता है (Init बाल नियंत्रण के लिए ईवेंट को उनके माता-पिता के Init ईवेंट से पहले बुलाया जाता है)।

Init आपके पृष्ठ या उपयोगकर्ता नियंत्रण में गतिशील नियंत्रण जोड़ने के लिए एक अच्छी जगह है (हालांकि यह आवश्यकता नहीं है)। यदि आप कर सकते हैं, तो उन नियंत्रणों में उनके ViewState पोस्टबैक के दौरान स्वचालित रूप से बहाल हो जाएंगे (नीचे देखें)। नियंत्रण गुण सेट करने के लिए यह एक जोखिम भरा स्थान है, हालांकि, इन्हें आने वाले ViewState द्वारा ओवरराइट किया जा सकता है। InitViewStateUserKey सेट करने के लिए सही जगह है, जो आपकी साइट को एक-क्लिक वाले हमलों से बचाने में मदद कर सकता है। यदि आप नियंत्रण स्थिति का उपयोग कर रहे हैं, तो आप वहां से RegisterRequiresControlState() भी कॉल करेंगे।

Init ईवेंट के ठीक बाद, प्रत्येक नियंत्रण ViewState ट्रैकिंग को सक्षम बनाता है, इसलिए इसके बाद किसी नियंत्रण के गुणों में कोई भी परिवर्तन ViewState में दिखाई देगा।

पृष्ठ स्तर पर अगली घटनाएं InitComplete और PreLoad हैं, जिनमें से कोई भी नियंत्रण स्तर पर दिखाई नहीं दे रहा है। पोस्टबैक के दौरान, आने वाले ViewState को InitComplete और PreLoad के बीच नियंत्रण में बहाल किया गया है।

फिर Load ईवेंट आता है, जो दोनों नियंत्रण और पृष्ठ के लिए होता है। Load को पहले माता-पिता स्तर पर और फिर किसी भी बच्चे के नियंत्रण के लिए बुलाया जाता है। एक मास्टर पेज इवेंट ऑर्डरिंग के संबंध में किसी पृष्ठ पर नियंत्रण की तरह व्यवहार करता है।

+0

बिल्कुल सही धन्यवाद! मुझे इनिट से ओनलोड तक जीवन चक्र के बारे में कुछ जानकारी मिली लेकिन इससे कहीं अधिक कठिन लिखा गया। – dg90

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