2014-06-11 5 views
8

मैं अपने एएसपी.नेट एमवीसी 4 प्रोजेक्ट में कस्टम मॉडल बाइंडर बनाने की कोशिश कर रहा था। लेकिन मैं IModelBinder iterfaces के साथ अटक गया। तीन IModelBinder इंटरफेस VS पा सकते हैं। निम्नलिखित नामस्थानों में।.NET मॉडल बाइंडर्स

using System.Web.Http.ModelBinding; 
using System.Web.Mvc; 
using System.Web.ModelBinding; 


bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) 
object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext); 
bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext); 

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

उत्तर

14

मैं नहीं एमएस लोक हूँ, लेकिन मैं यहाँ लगता है जवाब है -

  1. System.Web.ModelBinding ASP.Net WebForms अनुप्रयोगों के लिए है

http://msdn.microsoft.com/en-us/library/system.web.modelbinding(v=vs.110).aspx

System.Web.Model बाइंडिंग नेमस्पेस कक्षाएं प्रदान करता है जो आपको को एएसपी.NET वेब पर डेटा ऑब्जेक्ट्स को बाध्य करने में सक्षम बनाता है फॉर्म सर्वर नियंत्रण।

  1. System.Web.Mvc ASP.Net MVC

http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.118).aspx

System.Web.Mvc नाम स्थान कक्षाओं में शामिल है के लिए है और इंटरफेस वेब अनुप्रयोग बनाने के लिए एएसपी.NET मॉडल व्यू कंट्रोलर (एमवीसी) ढांचे का समर्थन करते हैं। इस नेमस्पेस में कक्षाएं शामिल हैं जो नियंत्रकों, नियंत्रक कारखानों, क्रिया परिणाम, विचार, आंशिक देखें, मॉडल बाइंडर्स और बहुत कुछ का प्रतिनिधित्व करती हैं।

  1. System.Web.Http.ModelBinding ASP.Net वेब एपीआई के लिए है

http://msdn.microsoft.com/en-us/library/system.web.http.modelbinding(v=vs.118).aspx

यह नाम स्थान वेब एपीआई के लिए है 2

संक्षेप में, सभी तीन ढांचे एक-दूसरे से स्वतंत्र हैं। और आपको याद रखना चाहिए कि, वे अलग-अलग तैनाती ढांचे हैं। इसलिए उन सभी को रखना जरूरी है। यदि आपको किसी विशेष व्यक्ति की आवश्यकता नहीं है, तो इसे अपने संदर्भित असेंबली से हटा दें। वे एक-दूसरे पर निर्भर नहीं हैं। वे सभी अलग-अलग ढांचे से हैं, जिनका उपयोग सभी उद्देश्य के लिए किया जाता है।

यह IntelliSense या ReSharper उपकरण है कि वे सभी सूचीबद्ध कर सकते हैं की तरह की सुविधा है।लेकिन आप वह हैं जो आपके ढांचे और आपकी ज़रूरत के आधार पर सही चुनना चाहिए। लेकिन आम तौर पर वे सभी एक .net फ्रेमवर्क पूर्ण संस्करण में उपलब्ध हैं और शायद एक ही काम की सेवा करते हैं।

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