ओवरलोडिंग के लिए मैंने जो भी उदाहरण देखे हैं, उनमें आमतौर पर एक ही नाम के केवल दो विधियों के साथ अलग-अलग पैरामीटर होते हैं और एक जीईटी क्रिया का उपयोग करते हैं जबकि दूसरा POST का उपयोग करता है। क्या एक ही विधि पर दो या दो से अधिक अधिभार करना संभव है, सभी एक ही क्रिया के साथ? Can you overload controller methods in ASP.NET MVC?उसी क्रिया के साथ एएसपीएनटी एमवीसी नियंत्रक विधियों को अधिभारित करना?
उत्तर
मुझे नहीं लगता कि आप डिफ़ॉल्ट रूप से एक क्रिया के साथ एक ही कार्रवाई का नाम ओवरलोड कर सकते हैं:
यहाँ मैं क्या कर रहा हूँ की चर्चा करते हुए का एक उदाहरण है। जैसा कि आप जिस अन्य थ्रेड को इंगित करते हैं, आप & विधियों को अधिभारित कर सकते हैं, फिर विधि में मैप करने वाली क्रिया को बदलने के लिए एक विशेषता का उपयोग करें, लेकिन मुझे लगता है कि यह वह नहीं है जिसे आप ढूंढ रहे हैं।
एक अन्य विकल्प है कि मैं पहले का उपयोग किया है (कैसे जटिल/अलग अपने भार के हैं पर निर्भर करता है) बस मापदंडों & के लिए नल मान का उपयोग करने के लिए प्रभावी ढंग से एक साथ अपने विभिन्न हस्ताक्षर विलय है। तो बजाय:
public ActionResult DoSomething(int id)...
public ActionResult DoSomething(string name)...
बस है:
public ActionResult DoSomething(int? id, string? name)
नहीं सबसे अच्छा समाधान है, लेकिन एक अधिभार बस तो इसकी नहीं एक समझौता बहुत बुरा दूसरे पर बनाता है।
एक अंतिम विकल्प है कि एक जाना (मैं इसे करने की कोशिश नहीं की है & भले ही यह काम करेंगे पता नहीं है, लेकिन तार्किक यह होना चाहिए) देने लायक हो सकता है, ActionMethodSelectorAttribute
के एक कार्यान्वयन लिखना है तुलना कि विधि हस्ताक्षर & पर ControllerContext
में पारित पैरामीटर सर्वश्रेष्ठ मिलान करने की कोशिश करता है (यानि अस्पष्टता को डिफ़ॉल्ट कार्यान्वयन से थोड़ा अधिक सख्ती से हल करने का प्रयास करें)।
मुझे लगता है कि यह नहीं है। के बाद से मैंने पाया कि MVC ढांचे वास्तव में परवाह नहीं है क्या आप पैरामीटर सूची में डाल दिया, उदाहरण के लिए, मेरी कार्रवाई की तरह है:
public ActionResult Index(int id) {...}
यह इस तरह का अनुरोध के लिए ठीक है: Domain.com/Index.aspx या Domain.com/Index.aspx?id=012901 या यहाँ तक कि Domain.com/Index.aspx?login=938293
प्रोग्रामिंग भाषा में अधिक भार के बाद से मतलब है कि आप (एक ही नाम के साथ) विभिन्न कार्यों का चयन इनपुट का उपयोग पैरामीटर, लेकिन इस मामले में एमवीसी की परवाह नहीं थी! तो एक्शनवर्ब ओवरलोडिंग के अलावा, मुझे लगता है कि यह ठीक नहीं है।
हाँ, लेकिन मेरा मानना है कि यह आपके यूआरएल सिंटैक्स की वजह से है, जहां मैं {नियंत्रक}/{action}/{id} टाइप सिंटैक्स का उपयोग कर रहा हूं। – 4thSpace
मैंने ओवरलोडिंग का परीक्षण करने के लिए आपके जैसे सिंटैक्स की कोशिश नहीं की है, लेकिन ऐसा लगता है कि यह अभी भी संभव नहीं है क्योंकि एएसपीनेट एमवीसी अभी भी एक स्ट्रिंग के रूप में आईडी (पैरामीटर) का इलाज करेगा और इसे क्रिया में पास कर देगा (इसे टाइप करने का प्रयास कर सकता है अगर कार्रवाई केवल int स्वीकार करती है, लेकिन उस स्थिति में, आईडी पूर्ण होने पर कुछ त्रुटि उत्पन्न हो सकती है) – xandy
- 1. आईओसी के साथ एएसपीएनटी एमवीसी -> बेसकंट्रोलर
- 2. एएसपीएनटी एमवीसी
- 3. एएसपीएनटी एमवीसी
- 4. एएसपीएनटी एमवीसी
- 5. क्यों विधियों के अंदर विधियों को अधिभारित करने की अनुमति नहीं है (उदा। अधिभारित बंद)?
- 6. एएसपीएनटी एमवीसी - जटिल उदाहरण?
- 7. रेडियो बटन एएसपीएनटी एमवीसी बाध्यकारी
- 8. क्या मैं एएसपीएनटी एमवीसी
- 9. कस्टम अपवाद फ़िल्टर एएसपीएनटी एमवीसी
- 10. ओवरलोडिंग नियंत्रक क्रिया
- 11. एएसपीएनटी एमवीसी: निनजेक्ट - आईप्रिनेंडर
- 12. आप एएसपीएनटी एमवीसी
- 13. एएसपीएनटी एमवीसी चेकबॉक्स सिरदर्द!
- 14. एएसपीएनटी एमवीसी: टेक्स्टबॉक्स
- 15. एएसपीएनटी एमवीसी समाधान/परियोजना लेआउट
- 16. एएसपीएनटी एमवीसी क्लाइंट साइड सत्यापन
- 17. 403 एएसपीएनटी एमवीसी
- 18. रेल: मैं नियंत्रक/क्रिया
- 19. क्या मुझे अपना एएसपी.नेट एमवीसी नियंत्रक क्रिया वर्चुअल बनाना चाहिए?
- 20. एएसपीएनटी एमवीसी 3
- 21. एएसपीएनटी एमवीसी और $ .ajax ने प्रदर्शन ओवरहेड
- 22. जावाडोक पुन: उपयोग और अधिभारित विधियों
- 23. अजाक्स पोस्ट एएसपीएनटी एमवीसी 3
- 24. एक एएसपीएनटी एमवीसी परियोजना
- 25. एएसपीएनटी एमवीसी यूआरएल.कंटेंट() सीडीएन रीडायरेक्शन
- 26. एचटीएमएल.आरओ एएसपीएनटी एमवीसी
- 27. एएसपीएनटी एमवीसी फ़ाइल कंटेंटटाइप
- 28. उसी क्रिया में दृश्य नियंत्रकों को पॉपिंग और पुशिंग
- 29. मॉडल दृश्य नियंत्रक का उल्लंघन करने के लिए इशारा पहचानकर्ता/क्रिया विधियों को जोड़ना?
- 30. क्या एमवीसी नियंत्रक में एक क्रिया पर प्राधिकरण को अक्षम करना संभव है?
यह काफी मैं क्या कर रहा है, लेकिन मैं रूप public ActionResult DoSomething (पूर्णांक? आईडी, स्ट्रिंग नाम) इसे लिखने और बस विधि में के लिए String.IsNullOrEmpthy (नाम) एक चेक करते हैं। – Chris