2017-08-02 3 views
5
<%@ Page Language="C#" %> 

<!DOCTYPE html> 

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     myTr.Visible = false; 
     mySpan.Visible = false; 
    } 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <table runat="server"> 
      <tr id="myTr"> 
       <td>Hello</td> 
       <td><span id="mySpan">World</span></td> 
      </tr> 
      <tr> 
       <td>Hi</td> 
       <td>Bye</td> 
      </tr> 
     </table> 
    </form> 
</body> 
</html> 

सूचना myTr और mySpanदोनों runat = सर्वर की जरूरत नहीं है, लेकिन संकलक केवल mySpan.Visible = false पर त्रुटि देता है।मैं सर्वर पक्ष से runat = सर्वर के बिना HTML तत्व का उपयोग क्यों कर सकता हूं?

enter image description here

क्यों myTr.Visible = false पर रिपोर्ट त्रुटि संकलक नहीं करता है?

उत्तर

1

मेरा अनुमान है कि आप अपने tr तक पहुंचने में सक्षम हैं क्योंकि तालिका सर्वर पर चलती है और tr तालिका का हिस्सा है।

दूसरी तरफ, span तत्व क्लाइंट से केवल पहुंच योग्य है क्योंकि इसे सर्वर की ओर से प्रस्तुत नहीं किया गया है।

यदि आप तालिका के लिए कुछ टीडी में कोई आईडी जोड़ते हैं तो आप इसे सर्वर साइड स्क्रिप्ट पर भी एक्सेस कर पाएंगे। हालांकि यदि आप तालिका से runat="server" हटाते हैं तो तालिका घटकों तक पहुंचने का प्रयास करते समय आपको बिल्ड त्रुटियां मिलेंगी।

<table runat="server"> 
    <tr id="myTr"> 
     <td id="myTd">Hello</td> <%--This td is also accessible from the server script--%> 
     <td><span id="mySpan">World</span></td> 
    </tr> 
</table> 

अद्यतन: ठीक है, यह नहीं एक अनुमान अब और है। माइकल अमुंडसेन और पॉल लिट्विन की अपनी पुस्तक ASP.NET for Developers पर महान स्पष्टीकरण के अनुसार। आप वहां कारण देख सकते हैं।

यहाँ भी अपनी टिप्पणी के अनुसार सारांश: पेज 136 पर, उपशीर्षक: टेबल हैडर (गु), पंक्ति (TR) और विस्तार (टीडी) यह कहते हैं: तुम भी करने के लिए सर्वर-साइड कोड का उपयोग कर सकते एक टेबल के वें, टीआर और टीडी टैग में हेरफेर करें। लिस्टिंग 8.9 मैनिपुलेटिंग थ, टीआर और टीडी टैग सर्वर-साइड कोड का उपयोग करना आपके जैसा ही है।

असल में आईडी के साथ एक runat="server" और th, tr और td तत्वों के साथ एक मेज का श्रेय केवल (कोई runat = "सर्वर") को प्रभावी ढंग से सूची के शीर्ष पर Page_Load ईवेंट हैंडलर से पहुँचा रहे हैं।

यदि आप पढ़ना जारी रखते हैं तो आपको सर्वर नियंत्रणों के बारे में स्पष्टीकरण दिखाई देगा और कैसे ASP.NET उन्हें HTML तत्वों से मेल खाता है।

आशा है कि इससे मदद मिलती है!

+0

पुस्तक यह नहीं कहती है कि हम बिना रनैट = सर्वर के तत्व को क्यों एक्सेस कर सकते हैं जब तक कि मैं अंधेरा न हो। क्या आप उचित उपयोग कर सकते हैं और उस हिस्से को अपने उत्तर में शामिल कर सकते हैं? – Gqqnbig

+0

@LoveRight पृष्ठ 136 पर, उपशीर्षक: तालिका शीर्षलेख (था), पंक्ति (टीआर) और विस्तार (टीडी) यह कहता है: आप तालिका के वें, टीआर और टीडी टैग में हेरफेर करने के लिए सर्वर-साइड कोड का भी उपयोग कर सकते हैं। लिस्टिंग 8.9: सर्वर-साइड कोड का उपयोग करके टी, टीआर और टीडी टैग मैनिपुलेटिंग आपके समान ही है। मूल रूप से एक runat = "server" और th, tr और td तत्वों के साथ एक तालिका केवल आईडी गुणों के साथ (runat = "server" नहीं) जो सूची के शीर्ष पर पेज_लोड ईवेंट हैंडलर से प्रभावी रूप से उपयोग की जाती हैं। यदि आप पढ़ना जारी रखते हैं तो आपको सर्वर नियंत्रणों के बारे में स्पष्टीकरण दिखाई देगा और कैसे ASP.NET उन्हें HTML तत्वों से मेल खाता है। –

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