यदि मेरे पास ActionExecutingContext का एक उदाहरण है, तो मुझे प्रश्न में कार्रवाई का तरीका कैसे प्राप्त हो सकता है?मैं ActionExecutingContext से MethodInfo कैसे प्राप्त करूं?
उत्तर
ActionExecutingContext में एक संपत्ति एक्शनडिस्क्रिप्टर है।
यदि रिटर्न प्रकार वास्तव में एक प्रतिबिंबित एक्शन डिस्क्रिप्टर है जिसे आप कास्ट करने में सक्षम होना चाहिए। एक बार जब आप एक ReflectedActionDescriptor है ...
http://msdn.microsoft.com/en-us/library/system.web.mvc.reflectedactiondescriptor.aspx
... आप तकनीक है कि कार्रवाई के नाम लेने का उपयोग कर उपयोग कर सकते हैं यह MethodInfo संपत्ति है ...
http://msdn.microsoft.com/en-us/library/system.web.mvc.reflectedactiondescriptor.methodinfo.aspx
आपको सावधान रहना चाहिए और MethodInfo प्राप्त करने के लिए इसका उपयोग करें। कई मामलों में एक कार्रवाई का नाम नियंत्रक पर विधि नाम के समान होगा, लेकिन यह हमेशा मामला नहीं होगा। यदि आप नियंत्रक की विधि पर ActionName विशेषता का उपयोग करते हैं तो आप स्पष्ट रूप से कार्रवाई का नाम सेट कर सकते हैं। इसके अतिरिक्त, एक ही क्रिया नाम के साथ, दोनों अलग-अलग हस्ताक्षरों के साथ 2 विधियां हो सकती हैं। यह आम बात है जब आपके पास एक ही क्रिया का एक GET और POST संस्करण होता है (उदा। AccountController.cs के भीतर एक ब्रांड नई एएसपी.नेट एमवीसी परियोजना में पंजीकृत रजिस्टर और लॉगऑन क्रियाएं)।
Controller.GetType.GetMethod(actionExecutingContext.ActionName)
आज़माएं।
यदि आपका कोड सीधे कार्रवाई में है, तो आप MethodBase.GetCurrentMethod()
पर भी कॉल कर सकते हैं।
GetMethod समाधान कैसे काम करेगा जहां एक ही नाम के साथ कई विधियां हैं? उदाहरण के लिए, लॉगऑन या रजिस्टर (दो स्वीकार करने वाला पोस्ट और अन्य जीईटी) के लिए दो ओवरलोड। साथ ही, कार्य नाम के लिए क्रिया का नाम बहुत अलग करने के लिए ActionName विशेषता का उपयोग करना संभव है। –
यह नहीं होगा। आपका जवाब बहुत बेहतर है। – SLaks
मुझे कुछ लॉगिंग उद्देश्यों के लिए मेरे कस्टम विशेषताओं को लाने के लिए MethodInfo
प्राप्त करने की आवश्यकता है।
इस विशिष्ट उपयोग के मामले में मैंने देखा कि (कम से कम एमवीसी 5 में) ActionDescriptor.GetCustomAttributes
विधि मौजूद है, और यह प्रत्येक ActionDescroptor
वंशजों के लिए ठीक से ओवरराइड है।
इसी प्रकार, GetParameters
जैसे अन्य संबंधित विधियों, आदि
- 1. विधि प्रतीक से MethodInfo कैसे प्राप्त करें
- 2. MethodInfo
- 3. methodinfo
- 4. मैं एनएसएसटींग से कक्षा कैसे प्राप्त करूं?
- 5. मैं शब्दकोश से कैसे प्राप्त करूं?
- 6. मैं वीबीए से SQLite कैसे प्राप्त करूं?
- 7. मैं UIImagePickerControllerReferenceURL से डेटा कैसे प्राप्त करूं?
- 8. मैं XDocument से नेमटेबल कैसे प्राप्त करूं?
- 9. मैं कैस्परजेएस से आईफ्रेम कैसे प्राप्त करूं?
- 10. ActionExecutingContext ActionParameters बनाम RouteData
- 11. कक्षा विधि के MethodInfo को कार्यान्वित करने, इंटरफ़ेस विधि के MethodInfo कैसे प्राप्त करें?
- 12. मैं किसी प्रकार से TryParse विधि से कैसे प्राप्त करूं?
- 13. तरह से अनुकूलित अभी "get_Item" MethodInfo
- 14. मैं servlet-api.jar कहां से प्राप्त करूं?
- 15. मैं प्री-लोडेड MethodInfo स्थानीय चर के साथ एक विधि कैसे उत्सर्जित करूं?
- 16. मैं एक मनमानी pthread_t से थ्रेड आईडी कैसे प्राप्त करूं?
- 17. मैं $ _POST से प्रमुख मान कैसे प्राप्त करूं?
- 18. मैं बेस नियंत्रक से कार्रवाई का नाम कैसे प्राप्त करूं?
- 19. मैं UIButton से एक छवि कैसे प्राप्त करूं?
- 20. मैं पृष्ठ से HTML स्रोत कैसे प्राप्त करूं?
- 21. मैं जावा से स्कैला केस ऑब्जेक्ट कैसे प्राप्त करूं?
- 22. मैं हेरोकू से गिट भंडार कैसे प्राप्त करूं?
- 23. मैं आईडीएलई से कमांड इतिहास कैसे प्राप्त करूं?
- 24. मैं एक सरणी संदर्भ से एक टुकड़ा कैसे प्राप्त करूं?
- 25. मैं SortedDictionary से पिछली कुंजी कैसे प्राप्त करूं?
- 26. मैं PHP दिनांक समय से यूनिक्स टाइमस्टैंप कैसे प्राप्त करूं?
- 27. मैं सिर्फ गिटोसिस से सिर कैसे प्राप्त करूं?
- 28. मैं जावास्क्रिप्ट में डेटा तालिका से डेटा कैसे प्राप्त करूं?
- 29. मैं सी # में फ़ाइल से संशोधित दिनांक कैसे प्राप्त करूं?
- 30. मैं अज्ञात अभिव्यक्ति से मूल्य कैसे प्राप्त करूं?
MVC ढांचे में ही कोई अन्य प्रकार है कि वारिस 'ActionDescriptor' है कर रहे हैं। वास्तव में – SLaks
। इसलिए, आपको हमेशा एक प्रतिबिंबित एक्शन डिस्क्रिप्टर प्राप्त करना चाहिए और मेरा दृष्टिकोण काम करेगा। मैंने एमवीसी के भविष्य के संस्करणों के लिए बीमा के रूप में "अगर" शब्द का उपयोग किया, और यह सुझाव देने के लिए कि एक्शनडिस्क्रिप्टर को डालने के लिए कोड को इस संभावना के साथ लिखा जाना चाहिए। –
मुझे पता है कि यह बहुत पुराना है, लेकिन यदि आपके पास कोई कार्य/Async एक्शन विधि है, तो यह प्रतिबिंबित नहीं किया गया हैक्शन डिस्क्रिप्शन, लेकिन TaskAsyncActionDescription। इससे समस्याएं पैदा हो सकती हैं। –