Tricking ASP.NET into Thinking Request is Ajax Request for jQuery File Upload -
मैं MvcContrib से प्राप्त बचाव का उपयोग कर रहा हूं:
सार्वजनिक वर्ग RescueAttribute: MvcContrib.Filters । बचाव स्रोत {सार्वजनिक बचाव वस्तु (स्ट्रिंग दृश्य): आधार (देखें) {IgnoreAjax = false; } सार्वजनिक बचाव सामग्री (स्ट्रिंग दृश्य, पैरामीटर प्रकार [अपवाद प्रकार]): आधार (देखें, अपवाद प्रकार) {IgnoreAjax = false; } सुरक्षित ओवरराइड एक्शन रिंगटैट एक्शनआरसल्ट (अपवाद अपवाद, अपवाद कंसोर्ट प्रसंग) {var नियंत्रक = (स्ट्रिंग) संदर्भ। रूटडेटा। मूल्य ["नियंत्रक"]; Var एक्शन = (स्ट्रिंग) संदर्भ। रूटडेटा। मूल्य ["एक्शन"]; Var मॉडल = नया हैंडलएर्राइनइन्फो (अपवाद, नियंत्रक, कार्रवाई); अगर (context.Controller.ControllerContext.HttpContext.Request.IsAjaxRequest ()) {नई JsonResult वापस (मॉडल); } रिटर्न बेस। क्रेएट एक्शनआरिसल्ट (अपवाद, प्रसंग); }}
अब जब jQuery.form में फ़ाइल अपलोड का उपयोग करते हैं, तो Request.IsAjaxRequest () गलत देता है। जाहिरा तौर पर यह इसलिए है क्योंकि आप वास्तव में एक फाइल json पर अपलोड नहीं कर सकते हैं; यह प्लगइन अपलोड करने के लिए एक छिपी हुई आइफ्रेम उत्पन्न करता है।
क्षतिपूर्ति करने के लिए मैं किसी छुपा इनपुट को किसी भी रूप में संलग्न कर रहा हूं जिसे jquery.form के साथ प्रस्तुत किया गया है और इसमें फ़ाइल इनपुट हैं:
$ (this) .append ('& lt; इनपुट प्रकार = "छुपा" नाम = "एक्स-अनुरोधित-साथ" मान = "XMLHttpRequest" / & gt; ');
आईएसएजेक्सरूएस्ट को बेवकूफ बनाने के लिए बहुत अच्छा है। क्या कोई कारण है कि मैं नहीं ऐसा क्यों करूँ?
यह विधि ठीक है।
JQuery और अन्य क्लाइंट लाइब्रेरीज़ एक्स-रिक्वेस्ट-इन के साथ हेडर में डालते हैं। हालांकि, एएसपी अजाक्स हेल्पर्स छिपे हुए तत्वों का उपयोग करते हैं जैसा कि आपने ऊपर किया था।
महत्वपूर्ण बात यह है कि IsAjaxRequest () फार्म फ़ील्ड और हेडर दोनों की जांच करता है तो अगर उसे X-Requested-With के लिए एक्सएमएल के लिए XMLHttpRequest लगता है, तो यह सही होता है।
अच्छा तकनीक मैं इसे एक दिन का प्रयोग कर सकता हूं।
Comments
Post a Comment