दिलचस्प पोस्ट
सी # में जावा BigDecimal वर्ग के बराबर क्या है? मेरे स्ट्रिंग के कुछ हिस्सों को कैसे बदलें? एक सरणी स्थिति को एक सरणी स्थिति से दूसरे में ले जाएँ कैनवास में असली माउस की स्थिति सी ++ वर्चुअल / शुद्ध वर्चुअल समझाया नया टैब या विंडो में लिंक खोलें मोंगोडीबी से रैंडम रिकॉर्ड PHP में सरणी के लिए ऑपरेटर? कैसे एक सॉफ्टवेयर लाइसेंस कुंजी उत्पन्न और मान्य है? एक अमूर्त वर्ग के बजाय एक अंतरफलक का उपयोग करने के लिए और इसके विपरीत? एक अनिवार्य तत्व सरणी में एंट्रिक्स युक्त कनवर्टर कैसे परिवर्तित करें? एक ही आईडी वाला कई तत्व एक सीएसएस आईडी चयनकर्ता को जवाब देते हैं jQuery में गहरे बच्चे का चयन करें एंड्रॉइड स्टूडियो: पुस्तकालय के रूप में जार जोड़ें? सोप बनाम आराम (अंतर)

आप POST क्रिया का उपयोग करके किसी पृष्ठ को कैसे पुनर्निर्देशित करते हैं?

जब आप एक नियंत्रक के भीतर RedirectToAction कॉल RedirectToAction हैं, तो यह स्वचालित रूप से किसी HTTP GET का उपयोग करके रीडायरेक्ट करता है। मैं स्पष्ट रूप से एक HTTP POST का उपयोग करने के लिए कैसे बता सकता हूं?

मेरे पास एक ऐसी कार्रवाई है जो जीईटी और पोस्ट दोनों अनुरोधों को स्वीकार करती है, और मैं पोस्ट का उपयोग करके पुन: RedirectToAction करने में सक्षम होना चाहता हूं और उसे कुछ मान भेजना चाहता हूं।

इस कदर:

 this.RedirectToAction( "actionname", new RouteValueDictionary(new { someValue = 2, anotherValue = "text" }) ); 

मैं एक GET के बजाय एक HTTP POST का उपयोग करते हुए anotherValue वैल्यू और anotherValue मूल्य मान anotherValue चाहता हूं। क्या किसी को भी यह करना आता है?

वेब के समाधान से एकत्रित समाधान "आप POST क्रिया का उपयोग करके किसी पृष्ठ को कैसे पुनर्निर्देशित करते हैं?"

HTTP POST का उपयोग कर किसी पृष्ठ पर रीडायरेक्शन का समर्थन नहीं करता। जब आप कहीं पर रीडायरेक्ट करते हैं, तो HTTP "स्थान" हेडर ब्राउज़र को कहां जाना कहता है, और ब्राउज़र उस पृष्ठ के लिए GET अनुरोध करता है। संभवत: आपको अपने पृष्ठ के लिए GET अनुरोध स्वीकार करने के साथ-साथ पोस्ट अनुरोधों के लिए कोड लिखना होगा।

आपके विशेष उदाहरण के लिए, मैं ऐसा ही करता हूं, क्योंकि जाहिर है कि वास्तव में ब्राउज़र को वास्तव में अनुप्रेषित करने की कोई परवाह नहीं है (फिर भी वह जवाब स्वीकार करने के आधार पर जिसे आप पहले ही स्वीकार कर चुके हैं):

 [AcceptVerbs(HttpVerbs.Get)] public ActionResult Index() { // obviously these values might come from somewhere non-trivial return Index(2, "text"); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index(int someValue, string anotherValue) { // would probably do something non-trivial here with the param values return View(); } 

यह आसानी से काम करता है और वास्तव में कोई अजीब व्यवसाय नहीं है – यह आपको इस तथ्य को बनाए रखने की अनुमति देता है कि दूसरा वास्तव में केवल HTTP पोस्ट अनुरोध स्वीकार करता है (इस उदाहरण को छोड़कर, जो कि आपके नियंत्रण में है) और आपको या तो TempData का उपयोग करें, जो आपके द्वारा पोस्ट किए गए लिंक का सुझाव है

मुझे यह जानना अच्छा लगेगा कि इसके साथ "गलत" क्या है, अगर कुछ भी है जाहिर है, यदि आप वास्तव में ब्राउज़र को एक रीडायरेक्ट भेजना चाहते हैं, तो यह काम करने वाला नहीं है, लेकिन फिर आपको यह पूछना चाहिए कि आप इसे बदलने की कोशिश क्यों करेंगे, क्योंकि यह मेरे लिए अजीब लगता है।

उम्मीद है की वो मदद करदे।

अगर आप बिना किसी रीडायरेक्ट के दौरान दो क्रियाओं के बीच डेटा को पास करना चाहते हैं, तो क्वेरी स्ट्रिंग में कोई डेटा शामिल न करें, मॉडल को टेम्पेडाटा ऑब्जेक्ट में डाल दें।

कार्रवाई

TempData["datacontainer"] = modelData;

राय

 var modelData= TempData["datacontainer"] as ModelDataType; 

TempData एक बहुत ही अल्पकालिक उदाहरण के लिए होती है, और आपको इसे केवल वर्तमान और बाद के अनुरोधों के दौरान ही उपयोग करना चाहिए! चूंकि TempData इस तरह से काम करता है, आपको यह सुनिश्चित करने की आवश्यकता है कि अगली अनुरोध क्या होगा, और किसी अन्य दृश्य पर रीडायरेक्ट करना केवल उसी समय है जब आप इसकी गारंटी दे सकते हैं।

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

इसको आजमाओ

 return Content("<form action='actionname' id='frmTest' method='post'><input type='hidden' name='someValue' value='" + someValue + "' /><input type='hidden' name='anotherValue' value='" + anotherValue + "' /></form><script>document.getElementById('frmTest').submit();</script>"); 

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

मैं जेसन बंटी का जवाब विस्तार करना चाहता हूं

इस तरह

 ActionResult action = new SampelController().Index(2, "text"); return action; 

और एली इस बारे में कुछ विचार के लिए होगा कि यह सामान्य चर कैसे करें

सभी प्रकार के नियंत्रक मिल सकते हैं