जावास्क्रिप्ट के साथ एएसपी.नेट लेबल की दृश्यता बदलें

मेरे पास एएसपी.NET पृष्ठ है जो एएसपी: बटन है जो दिखाई नहीं दे रहा है। मैं इसे जावास्क्रिप्ट के साथ दृश्यमान नहीं कर सकता क्योंकि यह पृष्ठ पर प्रस्तुत नहीं किया गया है।

इसके समाधान के लिए क्या किया जा सकता है?

0
ro fr bn

7 उत्तर

इसे इस्तेमाल करे।

ऐसा करने के लिए सर्वर-साइड कोड का उपयोग न करें क्योंकि उसे पोस्टबैक की आवश्यकता होगी। दृश्यता = "झूठी" का उपयोग करने के बजाय, आप बस एक सीएसएस संपत्ति सेट कर सकते हैं जो बटन को छुपाता है। फिर, जावास्क्रिप्ट में, जब भी आप बटन को फिर से दिखाना चाहते हैं तो उस संपत्ति को वापस स्विच करें।

क्लाइंट आईडी का उपयोग किया जाता है क्योंकि यह बटन नामकरण कंटेनर नियंत्रण के अंदर है, तो यह सर्वर आईडी से अलग हो सकता है। इनमें विभिन्न प्रकार के पैनल शामिल हैं।

0
जोड़ा

यदि आपको क्लाइंट साइड पर इसे कुशलतापूर्वक उपयोग करने की आवश्यकता है, तो आप सर्वर की तरफ दृश्यमान संपत्ति का उपयोग नहीं कर सकते हैं। इसके बजाय, अपनी सीएसएस डिस्प्ले शैली को "none" पर सेट करें। उदाहरण के लिए:

फिर, आप इसे क्लाइंट साइड पर दृश्यमान बना सकते हैं:

document.getElementById('Label1').style.display = 'inherit';

आप इसे फिर से छुपा सकते हैं:

document.getElementById('Label1').style.display = 'none';

ध्यान रखें कि क्लाइंटिड अभ्यास में "लेबल 1" से अधिक जटिल होने के साथ समस्या हो सकती है। आपको क्लाइंट आईडी का उपयोग getElementById के साथ करना होगा, न कि सर्वर साइड आईडी, यदि वे भिन्न हैं।

0
जोड़ा

सुनिश्चित करें कि दृश्यमान संपत्ति सत्य पर सेट है या नियंत्रण पृष्ठ पर प्रस्तुत नहीं होगा। फिर आप इसे कुशल बनाने के लिए स्क्रिप्ट का उपयोग कर सकते हैं।

0
जोड़ा

यदि आप पृष्ठ लोड होने तक प्रतीक्षा करते हैं, और उसके बाद बटन का डिस्प्ले किसी को भी सेट करें, तो उसे काम करना चाहिए। फिर आप इसे बाद के बिंदु पर दृश्यमान बना सकते हैं।

0
जोड़ा

इस तरह की चीजें करते समय आपको XSS से सावधान रहना होगा:

document.getElementById('<%= Label1.ClientID %>').style.display

The chances are that no-one will be able to tamper with the ClientID of Label1 in this instance, but just to be on the safe side you might want pass it's value through one of the AntiXss library's methods:

document.getElementById('<%= AntiXss.JavaScriptEncode(Label1.ClientID) %>').style.display
0
जोड़ा

डेव वार्ड के साथ जारी रखने के साथ:

  • आप दृश्यमान संपत्ति को झूठी पर सेट नहीं कर सकते क्योंकि नियंत्रण प्रदान नहीं किया जाएगा।
  • आपको शैली प्रॉपर्टी का उपयोग डिस्प्ले को none पर सेट करने के लिए करना चाहिए।

पृष्ठ/नियंत्रण डिज़ाइन


पीछे कोड

लोड खंड में कहीं कहीं:

Label label1 = (Label)FindControl("Label1");
((Label)FindControl("Button1")).OnClientClick = "ToggleVisibility('" + label1.ClientID + "')";

जावास्क्रिप्ट फ़ाइल

function ToggleVisibility(elementID)
{
    var element = document.getElementByID(elementID);

    if (element.style.display = 'none')
    {
        element.style.display = 'inherit';
    }
    else
    {
        element.style.display = 'none';
    }
}

बेशक, यदि आप टॉगल नहीं करना चाहते हैं, लेकिन बस बटन/लेबल दिखाने के लिए जावास्क्रिप्ट विधि को तदनुसार समायोजित करें।

यहां महत्वपूर्ण बात यह है कि आपको उस नियंत्रण के ClientID के बारे में जानकारी भेजने की आवश्यकता है जिसे आप क्लाइंट साइड पर जावास्क्रिप्ट फ़ाइल में हेरफेर करना चाहते हैं या तो वैश्विक चर सेट करना या मेरे जैसा फ़ंक्शन पैरामीटर के माध्यम से उदाहरण।

0
जोड़ा

यह मैंने पाया सबसे आसान तरीका है:

        BtnUpload.Style.Add("display", "none");
        FileUploader.Style.Add("display", "none");
        BtnAccept.Style.Add("display", "inherit");
        BtnClear.Style.Add("display", "inherit");

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

0
जोड़ा