2014-06-11 9 views
8

Stavo cercando di creare un modello personalizzato nel mio progetto ASP.NET MVC 4. Ma mi blocco con IMerelBinder iterfaces. Ci sono tre interfacce IModelBinder che VS può trovare. Nei seguenti namespace..NET Model Binders

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); 

Tutte le classi correlate come ModelBindingContext, ModelMetadata e altri sono anche duplicati. Io e il mio amico non possiamo scoprire quale sia lo scopo di una così terribile duplicazione del codice. Perché gli sviluppatori Microsoft non hanno estratto le classi comuni nell'assembly condiviso? Capisco che un'interfaccia sia utilizzata in MVC, una in Web Api e qual è lo scopo della terza versione? Queste interfacce sono indipendenti o in qualche modo interconnesse l'una con l'altra?

risposta

14

Io non sono MS popolare ma penso che qui è la risposta -

  1. System.Web.ModelBinding è per le applicazioni ASP.NET WebForms

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

Lo spazio dei nomi System.Web.ModelBinding fornisce classi che consentono a di associare oggetti dati a Web ASP.NET Controlli server form.

  1. System.Web.Mvc è per ASP.Net MVC

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

Il namespace System.Web.Mvc contiene le classi e le interfacce che supportano il framework ASP.NET Model View Controller (MVC) per la creazione di applicazioni Web . Questo spazio dei nomi include classi che rappresentano i controller , le fabbriche dei controller, i risultati delle azioni, le viste, la vista parziale , i raccoglitori dei modelli e molto altro.

  1. System.Web.Http.ModelBinding è per ASP.Net Web API

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

Questo spazio dei nomi è per API Web 2

In breve, tutti e tre i quadri sono indipendenti l'uno dall'altro. E dovresti ricordarlo, sono quadri dispiegabili separatamente. Perciò è necessario tenerli tutti. Se non è necessario un particolare, rimuoverlo dagli assiemi di riferimento. Non sono dipendenti l'uno dall'altro. Sono tutti provenienti da strutture separate sono tutti utilizzati per lo scopo più adatto.

E 'la caratteristica del intellisense o ReSharper come strumenti che possono elencare tutti.Ma tu sei quello che dovrebbe scegliere quello giusto in base alla tua struttura e alle tue necessità. Ma di solito sono tutti disponibili in una versione completa di .net framework e probabilmente servono lo stesso lavoro.