मैंने एक कस्टम एमवीसी मॉडल बाइंडर बनाया है जो सर्वर में आने वाले प्रत्येक HttpPost
के लिए बुलाया जाता है। लेकिन HttpGet
अनुरोधों के लिए बुलाया नहीं जाता है।जीईटी अनुरोध पर एएसपी.नेट एमवीसी के लिए कस्टम मॉडल बाइंडर
- क्या मेरे कस्टम मॉडल बाइंडर को
GET
के दौरान बुलाया जाना चाहिए? यदि हां, तो मुझे क्या याद आया? - यदि नहीं, तो अनुरोध से
QueryString
को संभालने वाले कस्टम कोड को मैं कैसे लिख सकता हूं?
यहाँ मेरी कार्यान्वयन Global.asax
protected void Application_Start()
{
ModelBinders.Binders.DefaultBinder = new CustomModelBinder();
//...
}
मैं इन समाधानों में देखा गया है ...
public class CustomModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// This only gets called for POST requests. But I need this code for GET requests.
}
}
, पर वे मैं क्या कर रहा हूँ के लिए काफी नहीं काम करते हैं खोज रहे हैं:
- के माध्यम से जटिल प्रकारों को जारी रखना
- डिफ़ॉल्ट बांधने की मशीन का उपयोग करना
धन्यवाद जटिल प्रकार (
?Name=John&Surname=Doe
) जवाब पर
टिप्पणी का निर्माण करने में मदद के लिए @Felipe करने के लिए। शायद ज़रुरत पड़े तो कोई और उसी के साथ संघर्ष, मुझे पता चला:
- बांधने की मशीन
GET
अनुरोध - आप CAN उपयोग
DefaultModelBinder
वर्ग के लिए इस्तेमाल किया जा सकता है कस्टम मॉडल - मेरे रोड़ा था कि कार्रवाई विधि में पैरामीटर होना चाहिए (अन्यथा मॉडल बाइंडर
GET
अनुरोधों के लिए छोड़ दिया गया है, जो आपको इसके बारे में सोचने पर समझ में आता है)
आप उपयोग कर सकते हैं [OnActionExecuting] (https://msdn.microsoft प्रत्येक अनुरोध को फ़िल्टर करने के लिए .com/en-us/library/dd493080% 28v = vs.98% 29.aspx) और उस विधि में आप 'अनुरोध' का उपयोग कर क्वेरी स्ट्रिंग प्राप्त कर सकते हैं। –
@JSantosh, मान लें कि मैंने ऐसा किया है और 'ऑनएक्शन एक्सेलिंग' में मेरी 'क्वेरीस्ट्रिंग' पकड़ लिया है। मैं क्वेरी ऑब्जेक्ट को किसी ऑब्जेक्ट में अनुवाद करने में सक्षम नहीं हूं और इसे क्रिया विधि के पैरामीटर के रूप में पास कर सकता हूं? जो मुझे एक ही परिस्थिति के साथ छोड़ देता है। –
पोस्ट अनुरोध में आपको डेटा के रूप में डेटा मिलता है जिसे स्वचालित रूप से संबंधित मॉडल में पार्स किया जाता है, लेकिन आपको डेटा को स्ट्रिंग के रूप में प्राप्त करने में, मुझे यकीन नहीं है कि आप इसे प्राप्त कर सकते हैं। और अच्छा सवाल :) –