2011-06-01 5 views
6

क्या एक ही नाम और पैरामीटर के साथ 2 क्रियाएं हो सकती हैं लेकिन एक पोस्ट है, दूसरा मिलता है? उदाहरण के लिए Delete(id) और [HttpPost]Delete(id) ... मुझे यह कहते हुए एक त्रुटि मिलती है कि इसकी अनुमति नहीं है ...क्या पोस्ट के लिए डुप्लिकेट एक्शन नाम और पैरामीटर सूची हो सकती है?

उत्तर

7

हां, यह संभव है। बस एक कार्रवाई पर ActionName विशेषता का उपयोग:

 public ActionResult Delete(int id) 
     { 
      //... 
      return View(); 
     } 

     [HttpPost] 
     [ActionName("Delete")] 
     public ActionResult Delete_Post(int id) 
     { 
      //... 
      return View(); 
     } 
+0

धन्यवाद, मुझे समझ में नहीं आया कि यह शुरुआत में क्यों चुना गया था क्योंकि यह एक बहुत ही वैध सवाल है। मैंने पढ़ा है कि कुछ लोग आपको यादृच्छिक पैरामीटर या फॉर्मकॉलेक्शन में पास होना चाहिए, लेकिन यह ओवरकिल जैसा लगता है। यह ऐसा करने के लिए एक बेहतर तरीका की तरह लगता है। बहुत सराहना की! –

+0

सिर्फ एक प्रश्न ... एमवीसी एक ही हस्ताक्षर के साथ 2 कार्यों की अनुमति क्यों नहीं देता है? मुझे लगता है कि ऐसा इसलिए है क्योंकि नियंत्रक नहीं जानता कि कौन सी कार्रवाई कॉल करें, लेकिन निश्चित रूप से HttpPost के साथ यह कोई समस्या नहीं होगी? –

+1

यह वास्तव में एमवीसी से संबंधित नहीं है। सी # विनिर्देशन द्वारा, किसी विधि के हस्ताक्षर को उस वर्ग में अद्वितीय होना चाहिए जिसमें इसे घोषित किया गया हो। यदि आप इसके बारे में सोचते हैं, यदि कोई विशेषता नहीं है, तो आप उन्हें कैसे अलग करेंगे? – frennky

1

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

जैसा कि फ्रेन्की ने इंगित किया है, एक्शननाम विशेषता एमवीसी में काम करती है क्योंकि एमवीसी प्रक्रिया के हिस्से के रूप में उपनाम का उपयोग करता है यह निर्धारित करने के लिए कि कौन सी कार्रवाई कॉल (विशेषताओं के साथ, लेकिन पैरामीटर नहीं)।

एक साइड नोट के रूप में, संभव है कि जीईटी अनुरोध पर हटाएं कार्रवाई न करें। आप क्रॉलर या कुछ अन्य बॉट को गलती से गलत लिंक नहीं मारना चाहते हैं: पी

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