2013-02-27 17 views
11

मेरे पास एक ही विधि है जिसे मैं छह नियंत्रकों में कॉल करता हूं। अभी मैं प्रत्येक नियंत्रकों के बीच कॉपी और पेस्ट करता हूं। सभी नियंत्रक एक ही नामस्थान में हैं। विधि बीत आईडी के आधार पर एक बूल देता है। उदाहरण के लिए:एकाधिक नियंत्रकों के बीच साझाकरण विधियां सी # एमवीसी 4

public bool CheckSubmission(int id =0) 
{ 
    Get Records from DB with criteria 
    If Record available return true 
    else return false 
} 

मैं से सी ++ सी # दूर थोड़ी देर के लिए किया गया है और इन एक बार लिखने के लिए कैसे पता नहीं कर सकते। मुझे रेल में पता है मैं साझा कंट्रोलर में साझा कार्यों को डाल सकता हूं। मैंने इस बारे में SO पर कई प्रश्न देखे हैं लेकिन एक स्पष्ट उदाहरण नहीं है, वे ओओपी पर पढ़ने वाली लाइनों के साथ अधिक हैं। किसी भी मदद की सराहना की जाएगी क्योंकि मैं इसमें वापस आ जाता हूं।

उत्तर

27

ControllerBase क्लास जो Controller से विरासत में मिलता है, इस विधि को इसमें रखें।

क्या आपके नियंत्रक आपके बेस नियंत्रक से प्राप्त होते हैं - उन्हें इस कार्यान्वयन का उपयोग करने के लिए मिल जाएगा।

public class ControllerBase : Controller 
{ 
    public bool CheckSubmission(int id = 0) 
    { 
    Get Records from DB with criteria 
    If Record available return true 
    else return false 
    } 
} 

public class SomethingController : ControllerBase 
{ 
    // Can use CheckSubmission in here 
} 
+0

स्पष्ट उदाहरण के लिए बहुत बहुत धन्यवाद। पूरी तरह से काम किया। – Xaxum

+2

मुझे विशेष रूप से इस सुझाव को पसंद नहीं है, लेकिन सहमत है, मैंने इसका उपयोग किया है और यह काम करता है। विस्तार विधियां बेहतर होंगी। स्थिर बूल चेकसब्रिशन (यह नियंत्रक नियंत्रक, int आईडी) {blah; blah; } तो आपको नियंत्रकों के उत्तराधिकारी को याद रखने की आवश्यकता नहीं है। आधार नियंत्रक – stephenbayer

+2

को बेहतर बनाए रखने के लिए यह एक दर्द बिंदु है, यह जांच किसी भी आवश्यक नियंत्रक में (कन्स्ट्रक्टर) निर्भरता के रूप में इंजेक्शन के लिए एक विशिष्ट * सेवा * कक्षा में ले जाया जाना चाहिए। – superjos

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