2011-09-27 6 views
8

मुझे पेजिंग समर्थन को लागू करने का प्रयास करने के बाद यह त्रुटि मिल रही है।नियंत्रक प्रकार 'डिनर नियंत्रक' पर कार्रवाई 'इंडेक्स' के लिए वर्तमान अनुरोध निम्न क्रिया विधियों के बीच संदिग्ध है

मैं एचटीएमएल ट्यूटोरियल के इस कदम पर हूँ: http://nerddinnerbook.s3.amazonaws.com/Part8.htm

+0

क्या आप वास्तविक त्रुटि आउटपुट और स्टैक ट्रेस प्रदान कर सकते हैं? अन्यथा यह कहना मुश्किल है कि आप कहां हैं और यह क्या है कि जब आप त्रुटि फेंकता है तो आप कर रहे हैं। – Maciej

उत्तर

23

आपको जो त्रुटि मिल रही है वह बताती है कि एएसपी.नेट एमवीसी को एक ही नाम के साथ दो क्रियाएं मिली हैं और इसका उपयोग नहीं किया जा सकता है।

आप अपने DinnersController.cs में दो सूचकांक कार्यों हों:

public ActionResult Index() { 

और:

public ActionResult Index(int? page) { 

तो फिर तुम पहले कार्रवाई निकाल देना चाहिए। चूंकि दूसरा पहला 'अद्यतन' संस्करण है। दूसरी लड़ाई के लिए अनुरोध स्वीकार करता?

/रात्रिभोज

/रात्रिभोज पेज = 2

/रात्रिभोज/सूचकांक

/रात्रिभोज/सूचकांक पृष्ठ = 2

और परिवर्तन के साथ मैं n RegisterRoutes यह भी करने के लिए अनुरोध स्वीकार करता है:

/रात्रिभोज/पृष्ठ/2

आप ही नाम के दो कार्यों हो सकता है, उपलब्ध कराने के (Postbacks), जहाँ आप के साथ बचत कार्रवाई को सजाने को बचाने के लिए एक है [AcceptVerbs(HttpVerbs.Post)] या बस [HttpPost]

+0

आईएमएचओ लोग इस "2 तरीके, समान नाम, अलग हस्ताक्षर प्राप्त करते हैं" ब्लॉग, किताबें और दस्तावेज़ों के पूर्ण टन की वजह से जो UrlParameter के विचार को पेश करते हैं। वैकल्पिक 'अतिरिक्त मार्गों को बचाने' के तरीके के रूप में। क्लासिक के लिए "सार्वजनिक एक्शन रिसैट सूची()" मार्ग मिलान से वे कहते हैं कि मार्ग के लिए यूआरएल पैरामीटर एनम जोड़ें: मार्ग। मैप रूट ("सरल", "{नियंत्रक}/{एक्शन}/{आईडी}", नया {id = UrlParameter.Optional}); फिर वे आपको "सार्वजनिक एक्शन रिसैट सूची (int? Id)" दिखाएंगे। वे लगभग कभी भी यह नहीं बताते हैं कि आपको काम करने के लिए मूल "एक्शन रिसेट सूची()" विधि को हटाना होगा। – rism

21

MVC अपने नियंत्रक में कार्रवाई तरीकों में से अधिक भार का समर्थन नहीं करता। एक ही नियंत्रक पर विभिन्न विधि हस्ताक्षर के साथ दो इंडेक्स() क्रियाएं संभव नहीं है।

उदाहरण बनाने के लिए आप काम का परीक्षण कर रहे हैं, आपको इंडेक्स() क्रिया को हटा देना चाहिए जो किसी भी पैरामीटर को स्वीकार नहीं करता है, और इसे उस क्रिया के साथ प्रतिस्थापित करता है जो एक पैरामीटर के रूप में एक निरर्थक int लेता है।

+5

यह अच्छा होगा अगर एमवीसी ने कार्यों के अधिभार को समर्थन दिया हो। मैं अपनी कार्रवाई के कई संस्करणों के बीच स्वैप करने में सक्षम होना चाहता हूं, मान लीजिए [प्राथमिकताएट्रिब्यूट (10)] ताकि यह क्रिया पहले ली जा सके। तो मैं उस डेटाबेस को कॉन्फ़िगरेशन से या जैसा चाहूं उस नंबर को बदल सकता हूं। –

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