2008-08-26 8 views
14

मान लीजिए कि आपके पास आईआईएस में 2 अलग-अलग एएसपी.NET अनुप्रयोग हैं। इसके अलावा, आपके पास कुछ एएससीएक्स नियंत्रण हैं जिन्हें आप इन 2 अनुप्रयोगों में साझा करना चाहते हैं।विभिन्न वेबसाइट अनुप्रयोगों में ASP.NET .ascx नियंत्रण साझा करने का सबसे अच्छा तरीका?

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

नियंत्रणों में एचटीएमएल + कोड के साथ एएससीएक्स है।


समग्र नियंत्रण मुश्किल होगा, क्योंकि हम डिजाइनरों जो ASCX फ़ाइलें में HTML सिंटैक्स का उपयोग नियंत्रण शैली के साथ काम करते हैं।

टुंडी, हम यहां एसवीएन का उपयोग करते हैं। क्या आपके पास एक सुझाव है कि आपके सुझाव को कैसे कार्यान्वित किया जाए? एसवीएन एएसपी.NET नियंत्रण कैसे साझा कर सकता है?

धन्यवाद!

उत्तर

5

यदि आप अलग-अलग परियोजनाओं में उनका उपयोग करने में सक्षम होना चाहते हैं तो आपको .ASCX नियंत्रणों के बजाय समग्र नियंत्रण बनाना होगा।

1

आपके वेबपैस के बीच एएससीएक्स नियंत्रणों को "साझा" करने के लिए अपने स्रोत नियंत्रण उपकरण का उपयोग करना एक विकल्प है। यह आपको किसी भी एप्लिकेशन में नियंत्रण में परिवर्तन करने की अनुमति देगा और स्रोत नियंत्रण सुनिश्चित करेगा कि परिवर्तन हमारे वेबैप में दिखाई दे रहे हैं।

0

मैं स्टारटेम का उपयोग यहां करता हूं और यह आपको कई फ़ोल्डर्स में ऑब्जेक्ट्स (फाइलें, अनुरोध अनुरोध, आवश्यकताएं आदि) साझा करने की अनुमति देता है। सुनिश्चित नहीं है कि सबवर्सन (एसवीएन) में यह सुविधा है या नहीं। यदि ऐसा नहीं होता है, तो आप यहां एक और चाल का उपयोग कर सकते हैं: अन्य परियोजनाओं में किसी स्थान पर नियंत्रण के प्राथमिक स्थान से जंक्शन बनाएं। एक जंक्शन एक यूनिक्स प्रतीकात्मक लिंक की तरह है। आप सबसे बड़ी समस्या मैं ASP.Net में नियंत्रण के साथ देखा है से here

0

Windows में जंक्शनों बनाने के लिए उपकरण डाउनलोड कर सकते हैं कि आप आसानी से दोनों नियंत्रण और निर्माण नियंत्रण का उपयोग करने के लिए डिजाइनर समर्थन प्राप्त कर सकते है एक बार साइट बनाने के बाद। एकमात्र तरीका यह है कि मैं ऐसा करने में सक्षम हूं। कोई कोड-बैक के साथ एक .ascx नियंत्रण बना रहा है (यानी: सभी सर्वर-साइड कोड runat = "server" विशेषता के साथ .ascx फ़ाइल में एक स्क्रिप्ट टैग में है) ।

लेकिन फिर भी, आपको अभी भी .ascx फ़ाइल को प्रतिलिपि बनाना है, इसलिए यदि आपको कभी भी बदलाव करने की आवश्यकता है जिसका मतलब है कि प्रत्येक स्थान पर फ़ाइल को अपडेट करना है जहां आपने इसका उपयोग किया है। तो हाँ, सुनिश्चित करें कि यह स्रोत नियंत्रण में है।

1

मैं पहली जगह नियंत्रण बनाने की आसानी को बलिदान करके ऐसा करने में कामयाब रहा।

आप एक नियंत्रण लाइब्रेरी प्रोजेक्ट बना सकते हैं जो आपके लिए नियंत्रण लाइब्रेरी डीएलएल उत्पन्न करेगा। दोष यह है कि आपको केवल कोड के साथ नियंत्रण बनाना है। मेरी आखिरी परियोजना में, यह ठीक था। अधिक जटिल नियंत्रण में, यह एक समस्या हो सकती है।

यहाँ एक उदाहरण है:

<DefaultProperty("Text"), ToolboxData("<{0}:BreadCrumb runat=server />")> _ 
Public Class BreadCrumb 
    WebControl 

    <Bindable(True)> _ 
    Property Text() As String 
     '...' 
    End Property 

    Protected Overrides Sub RenderContents(output as HtmlTextWriter) 
     output.write(Text) 
    End Sub 

    Private Sub Page_Load(...) Handles MyBase.Load 
     ' Setup your breadcrumb and store the HTML output ' 
     ' in the Text property ' 
    End Sub 
End Class 

कुछ भी आपको लगता है कि पाठ संपत्ति में डाल रेंडर किया जाएगा।

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

15

स्कॉट गुथरी उपयोगकर्ता नियंत्रण पुस्तकालय प्रोजेक्ट को सेट अप करने के तरीके पर यहां कुछ अच्छी सलाह देता है, फिर उपयोगकर्ता नियंत्रण को कई परियोजनाओं में कॉपी करने के लिए प्री-बिल्ड ईवेंट का उपयोग करें। यह वास्तव में अच्छी तरह से काम करता है।

http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx

+0

मैंने इन समाधानों के सेरेवलल को देखा, और यदि आपके पास वेबसाइटों के बीच साझा करने के लिए मौजूदा उपयोगकर्ता नियंत्रण हैं तो यह सबसे आसान है। –

0

मैं हाल ही में एक मुद्दे के बहुत ज्यादा के बिना एक वेब अनुप्रयोग है कि बस फ़ाइलों संदर्भित (के बारे में कुल में 90) एक वेब अनुप्रयोग (aspx, गुरु और ascx) से किया था। उस ने कहा कि मैं MVP pattern का भारी संशोधित संस्करण का उपयोग कर रहा था, जटिलता को कम रखने के लिए कई इंटरफेस और सम्मेलन, वही मध्यम स्तर और एक साइट दूसरे का सबसेट था।

बिग मुद्दों:

  1. मास्टर पृष्ठों (और बदले डिजाइनरों और HTML दृश्य स्वरूपण में) एक संदर्भित फ़ाइल पर काम नहीं करते तो आप कार्यक्षमता का एक बहुत खो देते हैं। एक पूर्व-निर्माण कदम और बहुत सारे svn: प्रविष्टियों को अनदेखा करना इसके आसपास मेरा हैक था। सही फ़ोल्डर में निष्पादित करने के लिए प्री-बिल्ड कार्य प्राप्त करने के लिए CruiseControl.NET को प्राप्त करना भी एक दर्द था।
  2. साझा पृष्ठों/नियंत्रणों को अतिरिक्त निर्भरताओं को लाने से बचने के लिए वे क्या स्पर्श करते हैं और संदर्भ के बारे में बेहद जागरूक होने की आवश्यकता है।
  3. दोनों साइटें तैनाती के लिए एक साथ बंद हैं।
  4. अब मुझे प्रार्थना करनी है कि रखरखाव मेरे द्वारा बनाई गई गड़बड़ी के बारे में मेरे पॉकी छोटे दस्तावेज़ को पढ़ता है। एएसपी.नेट परियोजनाओं में मैंने जो देखा है उससे बाहर है।

मैं इसे काम करने के लिए भारी समय के दबाव में था, यह करता है और अब दोनों ऐप्स उत्पादन में हैं। मैं यह सिफारिश करेंगे नहीं, लेकिन यदि आप में रुचि रखते शुरू कर रहे हैं:

मौजूदा आइटम जोड़े, कुछ फ़ाइलों का चयन, पर क्लिक करें बटन के तीर जोड़ें और एक लिंक के रूप में कहते हैं।

2

क्या Tundey कहा के अलावा, NTFS लिंक शेल एक्सटेंशन उपयोगी है जब यह अन्यथा स्वतंत्र परियोजनाओं के बीच (उदा .: .ascx/.aspx के साथ एक फ़ोल्डर) सामग्री की एक बड़ी हिस्सा साझा करने के लिए आता है। कोड के मामले में, मुझे लगता है कि वीसीएस से एक और कामकाजी प्रतिलिपि बनाना बेहतर है।

0

मैं एक suggestion.WE रूप normally.Then तय नामकरण और एक वेबसाइट संपत्ति का प्रयोग करें पेज विधानसभाओं बदलने वेबसाइट परियोजना के अंदर उपयोगकर्ता नियंत्रण बनाने के द्वारा गुणकों आवेदन भर में उपयोगकर्ता नियंत्रण का उपयोग कर सकते है तब हम उपयोगकर्ता नियंत्रण डीएलएल को कई अनुप्रयोगों में उपयोग कर सकते हैं।

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

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