2013-05-20 6 views
16

पोस्ट करने के लिए मानकों के साथ RedirectToAction यह सवाल यहाँ कहा गया है:ASP.NET MVC: कार्रवाई

RedirectToAction with parameter

लेकिन क्या होगा अगर मैं एक ही नाम है, लेकिन विभिन्न मापदंडों के साथ दो कार्यों है? मैं Terms कार्रवाई के बजाय POST Terms कार्रवाई पर रीडायरेक्ट कैसे करूं?

public ActionResult Terms() { 
    //get method 
} 

[HttpPost] 
public ActionResult Terms(string month, string year, int deposit = 0, int total = 0) { 
    //process POST request 
} 
+0

क्या आप RedirectToAction को देख रहे हैं? – PSL

+0

http://stackoverflow.com/questions/2626179/routing-to-the-actions-with-same-names-but- अलग-parameters –

+2

आप किसी पोस्ट एक्शन पर रीडायरेक्ट नहीं कर सकते हैं। एक रीडायरेक्ट हमेशा मिलता है, इसलिए यह संभव नहीं है। –

उत्तर

39

कोई बात नहीं दोस्तों, वास्तव में मैं सिर्फ विधि सीधे कह सकते हैं बजाय तो जैसे RedirectToAction का उपयोग करने का:

return RedirectToAction("Terms", {month, year, deposit, total}); 
+7

यह समाधान है। लेकिन यह एक हैक की तरह थोड़ा लगता है: ब्राउज़र में पता अभी भी पुरानी विधि है। इस तरह आप इसे नहीं देख सकते हैं, क्योंकि दोनों विधियां एक ही नाम हैं। लेकिन समस्या तब प्रकट होती है जब तर्क के साथ आपकी विधि को "शर्तें पोस्ट" कहा जाएगा। ब्राउज़र पता बार में "TermsPost" ("शर्तें" नहीं) पाने के लिए क्या करना है? – pt12lol

+0

pt12lol के साथ सहमत हैं, यह मूल रूप से क्रिया के साथ यूआरएल को बरकरार रखता है। –

+0

@ pt12lol: यहां दो समस्याएं हैं, ब्राउज़र को वास्तव में यह जानने की आवश्यकता नहीं है कि पृष्ठ किस एमवीसी कार्रवाई से आया था, RedirectToAction आंतरिक प्रोग्रामिंग प्रबंधन के लिए ब्राउज़र नहीं होना चाहिए। – Arjang

3

आप कर रहे हैं सही है कि आप कॉल कर सकते हैं:

return Terms(month, year, deposit, total); 
बजाय

विधि सीधे, लेकिन मैं अत्यधिक सुझाव देता हूं कि आप अपने वास्तुकला/कार्यान्वयन पर पुनर्विचार करें।

HTTP प्रोटोकॉल सुरक्षित और असुरक्षित क्रियाओं के विचार को गले लगाता है। जीईटी जैसे सुरक्षित क्रियाएं किसी भी तरह से सर्वर की स्थिति को संशोधित करने का अनुमान नहीं लगाती हैं, जबकि पोस्ट की तरह असुरक्षित क्रियाएं, PUT राज्य को संशोधित करें। आप पोस्ट विधि को कॉल करते हुए आप इस सिद्धांत का उल्लंघन कर रहे हैं क्योंकि यह असंभव नहीं है कि आपका पोस्ट राज्य को संशोधित करने जा रहा है।

इसके अलावा सबसे अच्छा अभ्यास तय है कि आप अपने सभी कार्यों पर क्रियाएं इसलिए यदि पहले 'शर्तें' विधि एक के रूप में मतलब है की सीमा चाहिए, फिर भी जोड़ HttpGet यह की विशेषता द्वारा स्वीकार किए जाने से अन्य Http कार्रवाई को रोकने के लिए कार्रवाई के लिए सर्वर।

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