2009-04-25 13 views
5

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

<asp:ListItem Value="1" Text="Yes" onclick="alert('TEST1');" /> 
<asp:ListItem Value="0" Text="No" onclick="alert('TEST2');" /> 

Intellisense ListItem की onclick संपत्ति दिखाने नहीं है (या यह विशेषता कहा जाता है?), लेकिन यह यकीन है कि काम करता है। यह क्यों नहीं दिखाता है? या क्या मैं इंटेलिसेंस पर बहुत अधिक निर्भर हूं? :-) या मुझे इस सामान को कोड-पीछे में घोषित करना चाहिए?

उत्तर

2

मुद्दा वेब सर्वर नियंत्रण ग्राहक के पक्ष घटनाओं से प्रदर्शित न होती कि IntelliSense है और केवल घटनाओं है कि सर्वर पर उठाए गए हैं सूचीबद्ध करता है। आप एक ही उद्देश्य के लिए एक HTML सर्वर नियंत्रण उपयोग किया है तो आप (क्लाइंट-साइड जे एस) Intellisense में घटनाओं देखना होगा।

विचार करने के लिए एक और मुद्दा यह है कि ऑनक्लिक ईवेंट विकल्प तत्वों के लिए समर्थित नहीं है (कम से कम आईई में नहीं, हालांकि फ़ायरफ़ॉक्स इसे ठीक से समर्थन करता है)। आपको onchange क्लाइंट साइड इवेंट को संभालना चाहिए। एक उदाहरण:

<select id="htmlserverselect" runat="server" onchange="alert(this.value);"> 
    <option value="1">Yes</option> 
    <option value="2">No</option> 
</select> 
+0

क्या यह जरूरी है? मैंने अपने जवाब में ध्यान दिया कि एएसपी बटन के इंटेलिजेंस पर ऑन क्लाइंटक्लिक शो है। वह घटना सर्वर पर नहीं उठाई गई है? क्या मैं शायद उस बारे में उलझन में हूं? – TheTXI

+0

हां, यह सच होगा, क्योंकि OnClientClick एक "सर्वर साइड प्रॉपर्टी" है (जो कुछ भी है!) यह सुनिश्चित करता है कि ऑनक्लिक विशेषता के साथ नियंत्रण निर्दिष्ट मूल्य पर सेट हो। यह एक विशेष वेब सर्वर नियंत्रण के लिए एक सुविधा उपाय उपलब्ध है, केवल इसलिए कि बटन को सबमिट करने से पहले चलाने के लिए अक्सर कुछ क्लाइंट कोड की आवश्यकता होती है। – Cerebrus

+0

यह तब समझ में आता है।जब आपने कहा कि यह केवल उन घटनाओं को सूचीबद्ध करता है जो सर्वर पर उठाए गए हैं जो बिल्कुल सही नहीं लग रहे थे क्योंकि OnClientClick वास्तव में सर्वर पर नहीं चल रहा है। – TheTXI

2

यह उस नियंत्रण पर कई बार निर्भर करता है जिसके साथ आप काम कर रहे हैं और विशेषता। मुझे पता है कि एएसपी button नियंत्रण onclick और onclientclick इंटेलिजेंस में गुण दिखाएंगे। ऐसा नहीं है कि ASP.NET पूरी तरह से listitem के लिए onClick विशेषता (के रूप में कहने के लिए listbox/dropdownlist/आदि नियंत्रण पर selectedindexchanged विशेषता खिलाफ) का समर्थन नहीं करता

+0

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

+0

मुझे अपनी उपरोक्त टिप्पणी में एक अस्वीकरण जोड़ना चाहिए: मुझे पूरी तरह से पता है कि अनुभव की अपनी कमी समस्या हो सकती है। –

+0

जॉन सॉंडर्स ने इसे अधिक आधिकारिक उत्तर के साथ समझाया। यदि यह आपके लिए काम करता है, तो यह आपके लिए काम करेगा, लेकिन मैं ऐसा कुछ करने की अनुशंसा नहीं करता जो वास्तव में समर्थित नहीं है। – TheTXI

1

ListItem वर्ग कोई onclick संपत्ति है हो सकता है।

ऐसा प्रतीत होता है कि ListItemIAttributesAccessor इंटरफ़ेस लागू करता है, और इसमें Attributes संग्रह भी है। इसे इस प्रकार दस्तावेज किया गया है:

ListItem के लिए विशेषता नाम और मूल्य जोड़े का संग्रह प्राप्त करता है जो सीधे कक्षा द्वारा समर्थित नहीं हैं।

आपके द्वारा टैग पर रखे गए गुण इस तरह से दिए जाते हैं जब नियंत्रण प्रदान किया जाता है। इसका विवरण नियंत्रण से अलग है। मैं एक पेज निम्नलिखित युक्त के साथ प्रयोग: DropDownList और ListBox के मामले में

<asp:DropDownList ID="_ddl1" runat="server" > 
    <asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" /> 
</asp:DropDownList> 
<asp:ListBox ID="_listBox1" runat="server"> 
    <asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" /> 
</asp:ListBox> 
<asp:RadioButtonList ID="_radioList1" runat="server"> 
    <asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" /> 
</asp:RadioButtonList> 

, दोनों गुण <Option> तत्व पर बनाए जाते हैं। RadioButtonList के मामले में, onclick विशेषता <input type="radio"> तत्व पर प्रदान की जाती है, लेकिन अपरिचित oncluck तत्व संलग्न <span> तत्व पर प्रदान किया जाता है।

ध्यान दें कि oncluck घटना स्पष्ट रूप से कभी नहीं निकाल दी जाती है।

;-)

+0

स्पष्ट रूप से सूचीकरण आईसीएचइकन इंटरफ़ेस लागू करता है और "ऑनक्लक" ईवेंट को लागू करने के लिए मजबूर किया गया था :) – TheTXI

+0

"ध्यान दें कि ऑनक्लक ईवेंट कभी नहीं निकाल दिया गया है, जाहिर है" हाहा! –

+0

@ ड्रेस ग्रीक: मैंने वास्तव में कोशिश की, लेकिन कुछ भी नहीं हुआ। ;-) –

0

कारण आप इसे IntelliSense में नहीं दिख रहा है क्योंकि "onclick" ASP.Net नहीं है।

<asp:ListItem Value="1" Text="Yes" Secret="Yes" onclick="alert('TEST1');" /> 
<asp:ListItem Value="0" Text="No" Secret="No" onclick="alert('TEST2');" /> 

आप जिस प्रकार HTML करने के लिए आप "गुप्त" विशेषता देखेंगे प्रदान की गई है पर नज़र डालें तो: आप कि यदि आप निम्न कार्य पर ध्यान देंगे। इसलिए जब एएसपी.Net आपके द्वारा रखे गए विशेषताओं को प्रस्तुत करेगा, तो यह केवल एएसपी.Net विशेषताओं के लिए इंटेलिजेंस प्रदान करेगा।

कोडिंग प्रथाओं के रूप में, मैंने देखा है और गिनने के लिए "ऑनक्लिक" कई बार उपयोग किया है। इसलिए जब एक शुद्धवादी को इस अभ्यास में कोई समस्या हो सकती है, तो मुझे लगता है कि इसका उपयोग करना ठीक है।

0

मान लेते हैं कि हम एक पॉप-अप संदेश घटना का एक सत्र टाइमआउट तरह से चालू होने वाले करते हैं।

जैसा कि आपको अपने ऑनलाइन बैंकिंग वेब एप्लिकेशन के लिए होना चाहिए।

तो, संदेश यह पढ़ता है कि आपके पास कुछ विशिष्ट मिनट हैं जो उस विशिष्ट सुरक्षित वेबसाइट के साथ अपना ऑनलाइन अनुभव पूरा करने के लिए हैं।

आमतौर पर, यदि आप इसके बारे में कुछ भी नहीं करते हैं, तो में उसी समय यह संदेश को पॉप पर ले गया, एप्लिकेशन आपको साइन आउट करेगा।

क्लाइंट साइड पर आपके पास उन कार्रवाइयों के लिए जावास्क्रिप्ट है।

अब, मान लीजिए कि जो बटन आपको इंगित करता है वह "btnSignOut" कहलाता है।

if(timeout){ 
; 
} 

वह उसी घटना को ट्रिगर किया जाएगा के रूप में पर क्लिक करके:

आप जे एस के एक लाइन से एक ही कार्रवाई को गति प्रदान करना चाहते हैं, समय समाप्ति पर, आप कुछ इस तरह होना चाहिए "btnSignOut" लिंक बटन।

Source

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