2010-07-17 10 views
7

मुझे इस तरह के एक बुनियादी सवाल पूछने के लिए खेद है, लेकिन यह मेरे लिए मौलिक है। फ़िल्टर को बेहतर ढंग से समझने के लिए, मुझे इस धारणा को समझने की आवश्यकता है। हालांकि मैं अब कुछ महीनों के लिए एएसपी.नेट एमवीसी पर हूं और अब अच्छे डेमो कर रहा हूं, मैं कार्रवाई के परिणाम की तुलना में एक्शन विधि अवधारणा से अधिक परिचित हूं।एएसपी.नेट एमवीसी: एक्शन विधि क्या हैं? कार्य परिणाम? वे कैसे संबंधित हैं?

क्या हैं:

  1. कार्रवाई विधि?
  2. कार्य परिणाम?
  3. वे कैसे संबंधित हैं?

मान लीजिए मैं इस

public ViewResult ShowPerson(int id) 
{ 
    var friend = db.Persons.Where(p => P.PersonID == id).First(); 
    return View(friend); 
} 

है कैसे उन अवधारणाओं ऊपर कोड लागू होता है?

मदद के लिए धन्यवाद।

उत्तर

9

आपके उदाहरण में ShowPerson कार्रवाई है। प्रत्येक कार्रवाई को एक क्रिया परिणाम वापस करने की आवश्यकता होती है (आपके मामले में यह एक दृश्य देता है)। तो जब एक नियंत्रक एक्शन विधि का आह्वान किया जाता है तो यह कुछ प्रसंस्करण करता है और यह तय करता है कि मॉडल का प्रतिनिधित्व करने के लिए कौन सा दृश्य सबसे अच्छा अनुकूलित किया जाएगा।

कई अलग-अलग क्रिया परिणाम हैं जिनका आप उपयोग कर सकते हैं। वे सभी ActionResult से निकाले जाते हैं:

  • ViewResult - यदि आप एक दृश्य
  • FileResult वापस जाने के लिए चाहते हैं - आप एक फ़ाइल
  • JsonResult डाउनलोड करना चाहते हैं - अगर आप JSON में
  • कुछ मॉडल को क्रमानुसार करना चाहते हैं ContentResult - आप सादे पाठ
  • RedirectResult वापस जाने के लिए चाहते हैं - अगर आप किसी अन्य कार्रवाई रीडायरेक्ट करना चाहते हैं
  • HttpUnauthorizedResult - एक कस्टम क्रिया नतीजा यह है कि आप ने लिखा
+0

अब मुझे बेहतर समझ है। तो, एक कार्रवाई परिणाम सिर्फ एक नियमित विधि है। उदाहरण के लिए, मैं देख सकता हूं (ऑब्जेक्ट)। बहुत बहुत धन्यवाद। – Richard77

+2

@ रिचर्ड 77, एक क्रिया परिणाम एक नियमित विधि का रिटर्न प्रकार है (जिसे क्रिया कहा जाता है)। 'देखें (ऑब्जेक्ट) 'केवल' नियंत्रक 'वर्ग पर परिभाषित एक विधि है जो' ViewResult' देता है। –

+0

ठीक है, मैं भी बेहतर देखता हूं। – Richard77

1

@ द्वारा उत्तर डैरिन-दिमित्रोव बिंदु तक बहुत ज्यादा है - आप संकेत मिलता है कि उपयोगकर्ता इस कार्रवाई

  • FooBarResult का उपयोग करने के लिए अधिकृत नहीं है चाहते हैं। लेकिन मुझे MSDN पर दिए गए स्पष्टीकरण को भी बहुत उपयोगी लगता है।

    कार्रवाई तरीकों आमतौर पर उपयोगकर्ता संबंधों के साथ एक एक-से-एक मानचित्रण है। उपयोगकर्ता इंटरैक्शन के उदाहरणों में ब्राउज़र में URL दर्ज करना, लिंक पर क्लिक करना और फ़ॉर्म सबमिट करना शामिल है। में से प्रत्येक उपयोगकर्ता इन इंटरैक्शन से सर्वर पर अनुरोध भेजने का कारण बनता है। प्रत्येक मामले में, अनुरोध के यूआरएल में ऐसी जानकारी शामिल है जो एमवीसी फ्रेमवर्क एक क्रिया विधि का आह्वान करने के लिए उपयोग करता है।

    एक उपयोगकर्ता ब्राउज़र में किसी URL प्रवेश करती है, MVC आवेदन रूटिंग नियम है कि यूआरएल पार्स करने के लिए और नियंत्रक के मार्ग निर्धारित करने के लिए Global.asax फ़ाइल में परिभाषित कर रहे हैं का उपयोग करता है। नियंत्रक अनुरोध को संभालने के लिए उचित क्रिया विधि निर्धारित करता है। डिफ़ॉल्ट रूप से, अनुरोध के यूआरएल को उप-पथ के रूप में माना जाता है जिसमें नियंत्रक नाम का नाम नाम के बाद होता है। उदाहरण के लिए, यदि उपयोगकर्ता URL http://contoso.com/MyWebSite/Products/Categories, उप-पथ/उत्पाद/श्रेणियों में प्रवेश करता है। डिफ़ॉल्ट रूटिंग नियम "उत्पाद" को नियंत्रक के उपसर्ग नाम के रूप में मानता है, जो "नियंत्रक" (जैसे उत्पाद नियंत्रक) के साथ समाप्त होना चाहिए। यह कार्रवाई के नाम पर "श्रेणियां" के रूप में व्यवहार करता है। इसलिए, अनुरोध को संसाधित करने के लिए रूटिंग नियम उत्पाद नियंत्रक की श्रेणियों विधि को आमंत्रित करता है। यदि यूआरएल/उत्पाद/विवरण/5 के साथ समाप्त होता है, तो डिफ़ॉल्ट रूटिंग नियम कार्रवाई के नाम के रूप में "विवरण" का व्यवहार करता है, और उत्पाद नियंत्रक के विस्तार विधि अनुरोध को संसाधित करने के लिए बुलाया जाता है। डिफ़ॉल्ट रूप से, URL में मान "5" को पैरामीटर के रूप में विस्तार विधि पर भेज दिया जाएगा।

  • +0

    @bummi मैं आपके बिंदु से सहमत हूं। मैंने जवाब संपादित कर लिया है। धन्यवाद। –

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