2008-09-19 17 views
20

क्या एक jQuery Superfish मेनू के साथ ASP.NET web.sitemap का उपयोग करना संभव है?jQuery मेनू और एएसपी.NET साइटमैप

यदि नहीं, तो क्या कोई मानक आधारित ब्राउज़र अज्ञेय प्लगइन उपलब्ध हैं जो web.sitemap फ़ाइल के साथ काम करते हैं?

उत्तर

29

मुझे एक ही जवाब की तलाश करते हुए यह प्रश्न मिला ... हर कोई कहता है यह संभव है लेकिन कोई भी वास्तविक समाधान नहीं देता है!

  • Superfish जो भी jQuery

  • CSS Friendly Control Adaptors डाउनलोड DLL का एक संस्करण भी शामिल है और: मैं इसे अब काम कर रहा है, इसलिए सोचा कि मैं मेरी निष्कर्षों पोस्ट करेंगे ...

    चीजें मैं जरूरत लगते हैं .browsers फ़ाइल (क्रमशः/bin और/app_Browsers फ़ोल्डरों में)

  • ASP.NET SiteMap (ए। साइटमैप एक्सएमएल फ़ाइल और siteMap प्रदाता ई web.config में जाँचें)

मेरे समाप्त हो गया Masterpage.master निम्नलिखित head टैग है:

<head runat="server"> 
    <script type="text/javascript" src="/script/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript" src="/script/superfish.js"></script> 
    <link href="~/css/superfish.css" type="text/css" rel="stylesheet" media="screen" runat="server" /> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
     $('ul.AspNet-Menu').superfish(); 
     }); 

</script> 
</head> 

मूल रूप से सब सामान काम करने के लिए jQuery SUPERFISH मेनू के लिए आवश्यक है कौन सा। अंदर पेज (जहां मेनू चला जाता है) (पर these instructions आधार पर) इस तरह दिखता है:

<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server" 
    ShowStartingNode="false" /> 
<asp:Menu ID="Menu1" runat="server" 
    DataSourceID="SiteMapDataSource" 
    Orientation="Horizontal" CssClass="sf-menu"> 
</asp:Menu> 

प्रलेखन के आधार पर, इस तरह यह काम करना चाहिए लगता है - लेकिन ऐसा नहीं है। इसका कारण यह है कि CssClass="sf-menu" मेनू प्रदान किए जाने पर ओवरराइट हो जाता है और <ul> टैग class="AspNet-Menu" प्राप्त करता है। मैंने सोचा कि लाइन $('ul.AspNet-Menu').superfish(); मदद करेगी, लेकिन ऐसा नहीं हुआ।

एक और बात

यद्यपि यह एक हैक है (और कोई मुझे सही समाधान को इंगित कृपया) मैं इसे superfish.css फ़ाइल और खोज खोलने औरsf- की जगह काम कर पाने के लिए कर रहा था मेनूAspNet-menu ... और वॉयला! मेनू दिखाई दिया। मैंने सोचा कि asp:Menu नियंत्रण में कुछ कॉन्फ़िगरेशन सेटिंग होगी जहां मैं <ul> कक्षा सेट कर सकता था लेकिन Google के माध्यम से कोई संकेत नहीं मिला।

+0

शानदार! मैं इस सवाल पूछने के बाद से एक जवाब खोज रहा हूं। –

+0

मैंने सभी आवश्यक फाइलों के साथ एक नमूना प्रोजेक्ट अपलोड किया है http://conceptdevelopment.net/Fun/Superfish – Conceptdev

+0

सीएसएस कक्षाओं के संबंध में, आप सही हैं कि वे कॉन्फ़िगर करने योग्य नहीं हैं। सीएसएस फ्रेंडली कोड में कक्षा के नाम हार्ड-कोड किए गए हैं। यदि आप वास्तव में चाहते थे, तो आप स्रोत डाउनलोड कर सकते हैं, कक्षाओं को संशोधित कर सकते हैं, और डीएलएल का पुनर्निर्माण कर सकते हैं, लेकिन मुझे लगता है कि आपका तरीका बहुत आसान है। –

0

साइटमैपडेटासोर्स नियंत्रण किसी भी पदानुक्रमित डेटा बाध्य नियंत्रण से जुड़ने में सक्षम होना चाहिए। मैं सुपरफिश से परिचित नहीं हूं लेकिन मुझे पता है कि ऐसा करने के लिए वहां बहुत सारे jQueryish नियंत्रण हैं।

2

ऐसा लगता है कि आपको सुपरफिश के लिए यूएल उत्पन्न करने की आवश्यकता है। आपको अपने साइट मानचित्र से एएसपी.Net के साथ ऐसा करने में सक्षम होना चाहिए। मुझे लगता है कि साइट मानचित्र नियंत्रण इस तरह कुछ करेगा। यदि नहीं, तो साइट मानचित्र को सीधे सी # से कॉल करने के लिए बहुत छोटा होना चाहिए और प्रोग्राम को DOM उत्पन्न करना चाहिए। ऐसा करने के लिए आप उपयोगकर्ता नियंत्रण बना सकते हैं, या इसे मास्टर पेज में कर सकते हैं।

this MSDN article को अपने साइट मानचित्र में नोड्स को प्रोग्रामेटिक रूप से गणना करने के तरीके पर देखें।

3

हां, यह पूरी तरह से संभव है।

मैंने इसे एएसपी के साथ उपयोग किया है: सुपरफ़िश प्लगइन के साथ मेनू नियंत्रण और jQuery 1.2.6। नोट, आपको ASP.NET 2.0 CSS Friendly Control Adapters की आवश्यकता होगी।

एएसपी.नेट एएसपी उत्पन्न करता है: मेनू नियंत्रण तालिका लेआउट के रूप में। सीएसएस फ्रेंडली कंट्रोल एडाप्टर एएसपी.NET एएसपी उत्पन्न करेगा: मेनू नियंत्रण एक div के अंदर एक यूएल/एलआई लेआउट के रूप में।

यह jQuery और सुपरफ़िश प्लगइन के आसान एकीकरण की अनुमति देगा क्योंकि सुपरफ़िश प्लगइन एक यूएल/एलआई लेआउट पर निर्भर करता है।

1

गैर लिंक तत्वों के लिए सीएसएस कक्षाएं जोड़ना याद रखें। सुपरफिश सीएसएस तत्व उनके लिए acccont नहीं है। और यदि आप मेरे जैसे हैं और रूट मेनू हैं जो लिंक नहीं हैं, तो यह बहुत ही प्रस्तुत करता है। बस superfish.css फ़ाइल में AspNet-menu-NonLink तत्व जोड़ें और इसे ठीक प्रस्तुत करना चाहिए।

0

मैं एक साफ थोड़ा नमूना परियोजना आप http://simplesitemenu.codeplex.com/

यह एक समग्र नियंत्रण जो आपके साइटमैप से एक नेस्टेड यूएल/LI सूची उत्पन्न करता है पर उपयोग कर सकते हैं बनाया।

का आनंद लें!

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