2011-01-06 9 views
10

हमारी कंपनी में एक विभाग क्लासिक एएसपीनेट का उपयोग कर रहा है, जबकि हमारा विभाग एमवीसी का उपयोग कर रहा है।मैं एक एएसपीएनटी एमवीसी नियंत्रक से गैर-एमवीसी एएसपीनेट पेज पर डेटा कैसे पोस्ट करूं?

हमें अपने पृष्ठ पर 5 चर (फॉर्म सबमिट करके) पास करने की आवश्यकता है। क्या कोई व्यक्ति एमवीसी नियंत्रक से फ़ॉर्म डेटा को फॉर्म वैरिएबल की अपेक्षा रखने वाले एएसपीनेट पेज पर फॉर्म डेटा पोस्ट करने का एक सरल उदाहरण दिखा सकता है?

उत्तर

13

यदि मैं इसे सही तरीके से पढ़ रहा हूं, तो आप इसे किसी भी क्रॉस डोमेन/एप्लिकेशन चिंता के बिना ऐसा करने में सक्षम होना चाहिए। आप इसे नियंत्रक में करना चाहते हैं, ताकि आप डेटा पोस्ट करने के लिए HttpWebRequest कक्षा का उपयोग कर सकें। यह एक वेब ब्राउज़र से पोस्टिंग के रूप में अवधारणात्मक रूप से वही है जहां तक ​​लक्षित अनुप्रयोग का संबंध है।

यहां एक त्वरित और गंदे टुकड़ा है:

// name/value pairs. field names should match form elements 
string data = field2Name + "=" + field1Value + "&" + field2Name+ "=" + field2Value 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(<url to other applications form action>); 

// set post headers 
request.Method = "POST"; 
request.KeepAlive = true; 
request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 

// write the data to the request stream   
StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(data); 

// iirc this actually triggers the post 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

ऐसा लगता है कि मैं जिस समाधान की तलाश में हूं। धन्यवाद, मैं इसे आज़मा दूंगा! – Monkey

+2

अपने लेखक को फ्लश करना या का उपयोग करना (var writer = new StreamWriter (request.GetRequestStream()) { लेखक। डेटा (डेटा); } –

0

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

या एक तालिका में लिखें और दूसरी साइट पर सीधे जाएं।

वास्तव में यह सुनिश्चित नहीं है कि आप दूसरी साइट पर पोस्ट करने में सक्षम होंगे क्योंकि मुझे लगता है कि यह सुरक्षा मॉडल के खिलाफ है।

+0

सुरक्षा जोखिम के कारण मैं क्वेरी स्ट्रिंग का उपयोग नहीं कर सकता, और उपयोगकर्ताओं के लिए संशोधित करना बहुत आसान है। यह डोमेन पार कर रहा है। – Monkey

+0

डोमेन को पार करने के लिए, अपनी ऑब्जेक्ट को JSON और Serialize जावास्क्रिप्ट में कनवर्ट करें, फिर इसे व्यूबैग को असाइन करें यदि नियंत्रक दृश्य या TempData देता है यदि यह किसी अन्य दृश्य पर रीडायरेक्ट करता है। फिर मैंने यही किया: CORS सक्षम के साथ एक WebAPI पर पोस्ट करने के लिए AngularJS का उपयोग करें। वेबएपीआई उन यूआरएल को निर्दिष्ट कर सकता है जिन्हें इसके नियंत्रक को पोस्ट करने की अनुमति है। @ Html.Raw (TempData ["yourdata"]) को जावास्क्रिप्ट ऑब्जेक्ट को असाइन किया जा सकता है जहां कोणीय इसे वेबएपीआई पर पोस्ट कर सकता है। इस उत्तर का संदर्भ लें: http://stackoverflow.com/a/32769992/1171842। क्लासिक एएसपी के लिए, डेटा स्वीकार करने वाला कोड वेबएपीआई को पोर्ट करने की आवश्यकता है। – Yogi

-1

मैं सूक्ष्म समस्या गायब हो सकता है, लेकिन तुम सिर्फ क्लासिक एएसपी पेज का यूआरएल है कि प्राप्त होगा करने के लिए MVC फार्म पर action निर्धारित नहीं कर सकते यह?

फ़ील्ड फॉर्म हेडर में उपलब्ध होंगे जिन्हें आप एएसपी पक्ष पर पढ़ सकते हैं। यदि एएसपी साइट पार साइट अनुरोध जालसाज़ी का पता लगाना है (लेकिन अगर वे इन-हाउस क्षुधा हैं, तो आप एएसपी पक्ष पर जालसाजी का पता लगाने कोड के लिए एक अपवाद जोड़ सकते हैं)

केवल मुद्दा होगा।

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