ASP.NET MVC - .NET Framework Part-6 Action methods and its attributes

 एक्शन मेथड क्या है?

एक्शन मेथड एक पब्लिक मेथड है जो ActionResult टाइप का डेटा रिटर्न करता है। कंट्रोलर के एक्शन मेथड कंट्रोलर के बिहेवियर को डिफाइन करते हैं। इसका मतलब है कि कंट्रोलर कौन से ऑपरेशन कर सकता है। हम फ़ाइल, स्क्रिप्ट, व्यू, JSON स्ट्रिंग वगैरह रिटर्न करने के लिए एक्शन मेथड का इस्तेमाल करते हैं।

ActionResult क्या है?

एक ActionResult एक रिटर्न टाइप का एक्शन मेथड है। जैसा कि इसके नाम से पता चलता है, एक्शन मेथड का आउटपुट या रिज़ल्ट ActionResult टाइप का होता है। उदाहरण के लिए, एक एक्शन मेथड String, JSON, File, JavaScript, या दूसरे तरह के कंटेंट रिटर्न कर सकता है। इन सभी अलग-अलग डेटा टाइप को एक साथ मिलाकर ActionResult टाइप बनाया जाता है।

ActionResult subtypes

अब हम इन अलग-अलग ActionResult टाइप को एक-एक करके देखते हैं। अगर हम ब्राउज़र में सिंपल प्लेन टेक्स्ट रिटर्न करना चाहते हैं, तो हमें ContentResult टाइप और Content() मेथड का इस्तेमाल करना चाहिए। अगर हम JsonResult डेटा टाइप रिटर्न करना चाहते हैं, तो आपको Json() मेथड का इस्तेमाल करना चाहिए। इसी तरह, ब्राउज़र विंडो में फ़ाइल कंटेंट रिटर्न करने के लिए हमें FileResult टाइप और File() मेथड का इस्तेमाल करना चाहिए। मेथड का नाम उसके रिटर्न टाइप पर आधारित होता है। इसका मतलब है कि एक एक्शन मेथड अलग-अलग तरह का डेटा रिटर्न कर सकता है।

सिर्फ़ डेटा ही नहीं, एक एक्शन View भी रिटर्न कर सकता है। व्यू एक cshtml फ़ाइल है। जब एक्शन मेथड कोई व्यू रिटर्न करता है, तो हम View() मेथड में व्यू फ़ाइल एक्सटेंशन cshtml नहीं देते हैं। बस View() मेथड के पैरामीटर के तौर पर व्यू का नाम लिखें। व्यू दिखाने के लिए यह काफ़ी है। एक एक्शन मेथड डिफ़ॉल्ट व्यू से एप्लिकेशन के किसी दूसरे व्यू पर रीडायरेक्ट कर सकता है।

एक्शन मेथड का डिफ़ॉल्ट व्यू क्या है?

मान लीजिए किसी एक्शन मेथड का नाम Index है, तो डिफ़ॉल्ट रूप से उसका व्यू Index होगा, अगर एक्शन कोई व्यू रिटर्न करता है। इसका मतलब है कि डिफ़ॉल्ट व्यू का नाम एक्शन मेथड का नाम होता है। यह ज़रूरी नहीं है कि मेथड डिफ़ॉल्ट व्यू रिटर्न करेगा। हम कोई दूसरा व्यू भी रिटर्न कर सकते हैं। कोई दूसरा व्यू रिटर्न करने के लिए, हम उसका नाम View मेथड में पैरामीटर के तौर पर लिखते हैं। 

ओवरलोडेड View methods

View मेथड ओवरलोडेड है:

  1. View()
  2. View(model)
  3. View(action)
  4. View(model, action)

  • View() मेथड default व्यू return करता हैं। 
  • जब View(model) मेथड में मॉडल पास करते हैं, तो यह मॉडल को डिफ़ॉल्ट व्यू पर भेजता है लेकिन 
  • जब View(model, action )मेथड में मॉडल और एक्शन दोनों पास करते हैं तो वह मॉडल उस खास एक्शन के व्यू पर भेजा जाता है। 
  • जब हम View(action) मेथड में action पास करते हैं, तो यह Request को उस action पर भेजता है

डेवलपर के पास पूरा कंट्रोल होता है कि मॉडल को किस व्यू पर भेजना है और एक्शन को दूसरे व्यू पेज पर कैसे रीडायरेक्ट किया जा सकता है।

हम एक एक्शन से दूसरे एक्शन पर रिक्वेस्ट भेजने के लिए RedirectToAction() मेथड का इस्तेमाल करते हैं।

Action को एट्रिब्यूट के साथ डेकोरेट करना

जब HTTP रिक्वेस्ट कंट्रोलर और एक्शन के लिए आती है, तो यह उस कंट्रोलर और एक्शन पर जाती है, लेकिन MVC एक्शन मेथड का नाम बदलने का मैकेनिज्म देता है। एक्शन मेथड को मेथड के ऊपर [ActionName] एट्रिब्यूट से डेकोरेट किया जाता है। इसी तरह, जब HTTP रिक्वेस्ट भेजी जाती है, तो HTTP Verbs जैसे GET, POST, PUT, DELETE, PATCH वगैरह में से किसी एक को एक्शन मेथड के ऊपर HTTP एक्सेप्ट वर्ब के तौर पर इस्तेमाल किया जा सकता है, ताकि उस खास एक्शन मेथड को डेकोरेटेड खास HTTP वर्ब द्वारा हैंडल किया जा सके जैसे: 

  • HttpGet
  • HttpPost
  • HttpDelete
  • HttpPut

[Authorize] : हम न केवल HTTP वर्ब और एक्शन मेथड का नाम बदलने के संबंध में एक्शन मेथड को मैनेज कर सकते हैं, बल्कि हम यह भी कंट्रोल कर सकते हैं कि किसी खास एक्शन मेथड को एक्सेस करने के लिए किसे ऑथराइज़ किया जा सकता है। मान लीजिए कि किसी एक्शन मेथड में बहुत सेंसिटिव डेटा है जिसे CEO और कंपनी के दूसरे बड़े अधिकारियों को एक्सेस करना चाहिए, लेकिन आम कर्मचारियों को नहीं। इस मामले में हम ऑथराइज़ एट्रिब्यूट का इस्तेमाल कर सकते हैं। केवल वही कर्मचारी इसे एक्सेस कर सकते हैं जिनके पास उस एक्शन मेथड को एक्सेस करने का वैलिड रोल है। इसी तरह, एक्शन मेथड से जुड़े आउटपुट कैश को उस मेथड को आउटपुट कैश से डेकोरेट करके मेंटेन किया जा सकता है। इसका मतलब है कि एक्शन मेथड का आउटपुट ब्राउज़र में कैश हो जाएगा ताकि उसे दोबारा एक्सेस किया जा सके। कंट्रोल और एक्शन मेथड के वैलिडेशन को वैलिड इनपुट एट्रिब्यूट का इस्तेमाल करके भी रेगुलेट किया जा सकता है।


NextASP.NET MVC - .NET Framework Part-7 Routing

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks