दिलचस्प पोस्ट
कैसे PowerShell के साथ एक ज़िप संग्रह बनाने के लिए? Google Places API में `सेंसर` का पैरामीटर क्या अच्छा है? Android डिवाइस नाम प्राप्त करें एक्सटेंशन के आधार पर मैं फाइल प्रकार की जानकारी कैसे प्राप्त करूं? (नहीं MIME) सी # में Www .htaccess में www www को पुनर्निर्देशित न करें कैसे जाओ में कई आदेश पाइप? LINQ में उच्चतम तिथि के साथ ही रिकॉर्ड का चयन कैसे करें मेटलैब मैट्रिक्स में डुबकी लगाने के लिए सामान्य विधि सी # टाइमर की तरह WPF टाइमर स्विफ्ट में NSURL सत्र डाउनलोड टास्क का उपयोग करते हुए बहुसंख्यक फ़ाइलों को डाउनलोड करने के लिए कैसे करें संदर्भ संदर्भ और सामान्य पैरामीटर में अंतर एसक्यूएल – कैसे स्थानांतरित करने के लिए? JVM को दूरस्थ डिबग करने की अनुमति देने के लिए जावा कमांड लाइन विकल्प क्या हैं? निर्मित प्रकारों का प्रदर्शन: चार बनाम लघु vs बनाम बनाम फ्लोट बनाम डबल Windows सुरक्षा विंडो को प्रदर्शित करने से रोकें

एएसपी.नेट वेबफॉर्म को रनैट = "सर्वर" विशेषता की आवश्यकता क्यों है?

मुझे अपने सभी एएसपी.NET नियंत्रणों पर runat="server" निर्दिष्ट करना क्यों आवश्यक है, जब यह एक अनिवार्य विशेषता है और server केवल एक ही विकल्प मेरे सीमित ज्ञान के एएसपी.नेट में उपलब्ध है, और अगर मैं नहीं करता तो मुझे एक त्रुटि मिलती है इसका इस्तेमाल करें?

मैं समझता हूं कि मैं वैकल्पिक रूप से इसे मेरे एचटीएमएल टैग पर इस्तेमाल कर सकता हूं, और मैं क्लाइंट / सर्वर प्रतिमान को समझता हूं और यह वास्तव में निर्दिष्ट करता है।

क्या यह एक अनावश्यक टैग है जिसे नियंत्रण को एएसपी.एन.टी.नेट नियंत्रण के जरिए लगाया जा सकता है, या क्या कोई अंतर्निहित कारण है?

Solutions Collecting From Web of "एएसपी.नेट वेबफॉर्म को रनैट = "सर्वर" विशेषता की आवश्यकता क्यों है?"

मुझे हमेशा यह विश्वास है कि आप एएसपी.नेट टैग्स और एचटीएमएल टैग्स मिश्रण कर सकते हैं और एचटीएमएल टैग्स में runat="server" या नहीं होने का विकल्प है। इसमें टैग को छोड़ने के लिए कुछ भी चोट नहीं पहुँचाता है, और इसे एक कंपाइलर त्रुटि का कारण बनता है जितनी अधिक चीजें आप वेब भाषा के बारे में बताते हैं, उतना आसान नहीं है कि एक नवोदित प्रोग्रामर के लिए आने और इसे सीखना। टैग विशेषताओं के बारे में किसी भी शब्दबध्द होने के कारण यह एक अच्छा कारण है।

यह वार्तालाप माइक्रोसॉफ्ट नेशनल सर्विसेज के खुद और टैलबोट क्रोले के बीच माइक स्किंकल के ब्लॉग पर पड़ा था। संबंधित जानकारी नीचे है (स्रोत में व्याकरण संबंधी त्रुटियों के कारण पहले पैराग्राफ पैरापेर्सेज):

[…] लेकिन <runat="server"> के महत्व को स्थिरता और अधिकता के लिए अधिक है

यदि डेवलपर को <asp: /> .NET इंजन की अनदेखी करने के लिए कुछ टैग्स (जैसे <asp: /> ) को चिह्नित करना है, तो टैग और भावी संवर्द्धन के बीच नाम स्थान के टकराव के संभावित मुद्दे भी हैं। <runat="server"> विशेषता की आवश्यकता के अनुसार, यह नकार दिया गया है।

यह जारी रहेगा:

अगर सभी क्लाइंट-साइड टैग के लिए <runat=client> की आवश्यकता होती है, तो सभी टैग को पार्स करने और <runat=client> part को बाहर निकालने की आवश्यकता होगी

वह जारी है:

वर्तमान में, यदि मेरा अनुमान सही है, तो पार्सर सभी पाठ (टैग या कोई टैग) को अनदेखा नहीं करता है, जब तक कि यह runat=server विशेषता या " <% " उपसर्ग या एसएसआई " <!– #include(.. ।) इसके अलावा, जब वेब डेवलपर्स (foo.aspx.vb) से वेब डिजाइनर (foo.aspx) को अलग करने की अनुमति के लिए एएसपी.नेट को डिज़ाइन किया गया है, तो वेब डिज़ाइनर HTML और क्लाइंट- एएसपी.नेट विशिष्ट टैग या विशेषताओं के बारे में जानने के बिना साइड जावास्क्रिप्ट

मैं आमतौर पर अनुमान नहीं करना चाहता, लेकिन मैं इस पर जा रहा हूँ …

अगर आपको याद है कि दिन में माइक्रोसॉफ्ट के। नेट विपणन प्रचार (2001?), तो यह कहना मुश्किल था कि .नेट भी क्या था। क्या यह एक सर्वर था? एक प्रोग्रामिंग प्लेटफार्म? एक भाषा? पूरी तरह से कुछ नया? विज्ञापनों को देखते हुए, यह कुछ भी है जो आप इसे चाहते थे – यह केवल आपके द्वारा की जाने वाली किसी भी समस्या का समाधान किया।

तो, मेरा अनुमान है कि छिपे हुए भव्य दृष्टि में एएसपी.एन.टी.टी.नेट कहीं भी चला सकता है – सर्वर साइड या क्लाइंट साइड, इंटरनेट एक्सप्लोरर की प्रतिलिपि में .नेट रनटाइम runat = "सर्वर" सिर्फ एक अवशिष्ट शेष है, पीछे छोड़ दिया क्योंकि यह क्लाइंट-साइड समकक्ष कभी भी इसे उत्पादन के लिए नहीं बनाया है

उन अजीब विज्ञापन याद रखें?

संबंधित: कुछ एनएटीटी के इतिहास से लेख ।

सभी नियंत्रण जो किसी पृष्ठ में शामिल किए जा सकते हैं, सर्वर पर चलना चाहिए । उदाहरण के लिए:

<INPUT type="submit" runat=server />

यह अनिवार्य रूप से समान है:

<asp:Button runat=server />

पहले से runat = server टैग निकालें और आपके पास एक मानक HTML बटन है जो ब्राउज़र में चलता है। सर्वर पर एक विशेष नियंत्रण चलाने के लिए और इसके खिलाफ कारण हैं, और एएसपी.नेट के लिए कोई भी तरीका नहीं है, जो आप "HTML मान मार्क" के आधार पर "मान लें" <asp:XXX /> नियंत्रण के परिवार के लिए runat = server को "अनुमानित करना" संभव हो सकता है, लेकिन मेरा अनुमान है कि माइक्रोसॉफ्ट मान लेगा कि मार्कअप वाक्यविन्यास और एएसपी.नेट इंजन के लिए एक हैक है।

मेरा संदेह यह है कि प्रोसेसिंग के दौरान सर्वर-साइड नियंत्रणों की पहचान कैसे की जाती है। यह निर्धारित करने के लिए कि सर्वर-साइड प्रसंस्करण करने की आवश्यकता है या नहीं, रनटाइम पर हर नियंत्रण को नाम के आधार पर जांचने के बजाय, यह टैग द्वारा आंतरिक नोड प्रस्तुति पर एक चयन करता है कंपाइलर यह सुनिश्चित करने के लिए जांचता है कि सभी आवश्यक नियंत्रणों को सर्वर टैग की आवश्यकता होती है, जो कि सत्यापन चरण के दौरान होती है।

माइक्रोसॉफ्ट एमएसडीएन लेख भूल गए नियंत्रण: एचटीएमएल सर्वर कंट्रोल रनैट = "सर्वर" का इस्तेमाल पाठ बॉक्स पर एक उदाहरण के साथ करता है <input type="text"> इसे <input type="text" id="Textbox1" runat="server"> परिवर्तित करके <input type="text" id="Textbox1" runat="server">

ऐसा करने से आपको सर्वर पर HTML तत्व को प्रोग्राम की पहुँच मिलेगी और वेब पेज बनने से पहले ग्राहक को भेजा जाएगा। HTML तत्व में आईडी विशेषता होना चाहिए। यह विशेषता तत्व के लिए एक पहचान के रूप में कार्य करती है और आपको अपने विशिष्ट आईडी द्वारा तत्वों के लिए कार्यक्रम में सक्षम बनाता है। इस विशेषता के अतिरिक्त, HTML तत्व में runat = "server" होना चाहिए यह प्रसंस्करण सर्वर को बताता है कि टैग सर्वर पर संसाधित होता है और इसे पारंपरिक HTML तत्व नहीं माना जाता है।

संक्षेप में, HTML तत्व को प्रोग्रामैटिक एक्सेस को सक्षम करने के लिए runat="server" जोड़ें।

ऐसा इसलिए है क्योंकि एएसपी.नेट में सभी नियंत्रण सिस्टम। वेब.यूआई.कंट्रोल से प्राप्त होता है जिसमें "रनैट" विशेषता होती है।

क्लास सिस्टम में.वेब.यूआई। एचटीएमएल कंट्रोल, हालांकि, क्लास सिस्टम में। एबियंटिटी की आवश्यकता नहीं है। वेब। यूआई। वेबकंट्रोल विशेषता का जरूरी है।

संपादित करें: मुझे अधिक विशिष्ट होने दें चूंकि asp.net बहुत एचटीएमएल का एक सार है, कंपाइलर को कुछ प्रकार के निर्देशों की जरूरत है ताकि यह जान सके कि विशिष्ट टैग को सर्वर-साइड चलाने की जरूरत है अगर वह विशेषता वहां नहीं थी, तो उसे पहले सर्वर पर प्रोसेस करने के लिए नहीं पता होगा। अगर ऐसा नहीं है, तो यह मान लिया जाता है कि यह नियमित मार्कअप है और क्लाइंट को भेजता है

मुझे लगता है कि माइक्रोसॉफ्ट संकलक को रन-एट्रीबेट जोड़कर इस अस्पष्टता को ठीक कर सकता है कि पेज को कभी भी संकलित किया जाता है, ऐसा कुछ ऐसा प्रकार है जिसे जावा के साथ जेनरिक्स के साथ मिटाया जा रहा है, इसके बजाय रनैट = सर्वर भी लिख सकता है asp: टैग के लिए उपसर्ग, इसलिए डेवलपर को इसके बारे में चिंता करने की आवश्यकता नहीं होगी।

यदि आप इसे सामान्य एचटीएमएल टैग्स पर प्रयोग करते हैं, तो इसका मतलब है कि आप प्रोग्राम हेलीकॉप्टरों को ईवेंट हैंडलर आदि में हेरफेर कर सकते हैं, उदाहरण के लिए पृष्ठ लोड पर एंकर टैग के href या वर्ग को बदलना … केवल तभी करें यदि आपको करना है, क्योंकि वेनिला एचटीएमएल टैग्स तेज चलो।

जहां तक ​​यूजर कंट्रोल्स और सर्वर नियंत्रण होते हैं, नहीं, वे बिना उनके बिना काम करते हैं, एएसपीएक्स प्रीप्रोसेसर के अंदरूनी जगहों के बिना, वास्तव में क्यों नहीं कह सकते, लेकिन अनुमान लगाएंगे कि शायद अच्छे कारणों के लिए, उन्होंने लिखा है पारसर इस तरह से, "कुछ करना" के रूप में स्पष्ट रूप से चिह्नित चीज़ों की तलाश में है

अगर @जोनस्केट कहीं भी आसपास है, तो वह शायद एक बेहतर जवाब प्रदान करने में सक्षम होगा।

एएसपी.नेट फ़ाइलों में एचटीएमएल तत्वों को मूल रूप से, पाठ के रूप में माना जाता है। इन तत्वों को प्रोग्राम बनाने के लिए, HTML तत्व में एक runat="server" विशेषता जोड़ें। यह विशेषता इंगित करती है कि तत्व को सर्वर नियंत्रण के रूप में माना जाना चाहिए।

जब एएसपी.नेट वेब सर्वर पर डाटा जमा करते हैं तो रनट = "सर्वर" के रूप में उल्लिखित नियंत्रण को सर्वर अनुप्रयोग में डॉट नेट ऑब्जेक्ट के रूप में प्रदर्शित किया जाएगा। आप मैन्युअल रूप से कोड को HTML नियंत्रण में टाइप कर सकते हैं या फिर डिज़ाइन दृश्य में राइट क्लिक करके सर्वर के रूप में चलाएं विकल्प का उपयोग कर सकते हैं। एएसपी.एन.टी. नियंत्रण स्वचालित रूप से इस विशेषता को प्राप्त कर लेगा, जब आप उसे टूलबॉक्स से खींच लेंगे जहां आमतौर पर एचटीएमएल नियंत्रण नहीं करते हैं।

"एएसपी" टैग पर विचार करते हुए, बहुत अनावश्यक विशेषता स्पष्ट रूप से एक एएसपी तत्व है और इसे सर्वर साइड एक्सेस करने योग्य तत्व के रूप में पहचानने के लिए पर्याप्त होना चाहिए।

अन्यत्र हालांकि यह कोड-पीछे में सामान्य टैग का उपयोग करने के लिए उपयोग किया जाता था

runat="Server" इंगित करता है कि एचटीएमएल "नियंत्रण" के लिए सर्वर पर एक पोस्टबैक होगा।

वेब प्रपत्र एक पृष्ठ नियंत्रण ईवेंट को संसाधित करने के लिए सर्वर को संकेत करने के लिए लगातार postback उपयोग करते हैं।

.NET MVC पृष्ठों postback उपयोग नहीं करते हैं (एक "submit" फ़ॉर्म को छोड़कर) MVC क्लाइंट साइड पर पेज को प्रबंधित करने के लिए JQUERY पर निर्भर करता है (इस प्रकार सर्वर पर कई postback मैसेज की ज़रूरत को पार करते हुए)

इसलिए: .NET वेब प्रपत्र … का प्रयोग "runat" पृष्ठ मार्कअप में बहुत कुछ विशेषता है।

.NET MVC शायद ही कभी पेज मार्कअप में "runat" विशेषता का उपयोग करता है।

उम्मीद है कि यह स्पष्ट करने में मदद करता है कि क्यों runat आवश्यक है …