2012-04-12 18 views
8

Ho recentemente posto una domanda here su Stack Overflow sulla ricerca del giusto punto di estensibilità per il binding del modello nella beta dell'API Web. L'utilizzo di un fornitore personalizzato/IModelBinder mi dà il controllo completo sull'associazione del modello e l'accesso ai provider di valore.Come posso richiamare l'associazione modello predefinita all'interno di un raccoglitore personalizzato nell'API Web MVC4?

Tuttavia, è davvero troppo controllo. Voglio solo controllare come sono mappati un paio di valori e non voglio legare il modello con codice manuale che altrimenti avrebbe funzionato bene.

In ultima analisi, questo è quello che mi piacerebbe essere in grado di fare:

public class MyCustomModelBinder : IModelBinder 
{ 
    public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) 
    { 
     // Invoke default model binding 

     // Pull out custom values 
     var value1 = bindingContext.ValueProvider.GetValue("value1"); 
     var value2 = bindingContext.ValueProvider.GetValue("value2"); 

     bindingContext.Model.Value1 = DoCustomStuff(value1); 
     bindingContext.Model.Value2 = DoCustomStuff(value2); 

     return true; 
    } 

    ... // Define DoCustomStuff 
} 

Sembra che sia abbastanza difficile da ottenere ahold di un provider predefinito per il WebAPI. Qualcuno sa se è accessibile e come dovrebbe essere consultato qui in un raccoglitore modello personalizzato?

risposta

-1

Im non sicuro in API Web ma in MVC è possibile ereditare da DefaultModelBinder e chiamare base.BindModel

+1

Sì, purtroppo l'API Web è un animale completamente diverso in questo momento nella beta. L'operazione predefinita del provider di binder è un metodo astratto. –

+0

Questo ha un tag di 'asp.net-web-api' che ha un binding di modello molto diverso da' MVC', quindi questa risposta non è affatto utile. – atconway

Problemi correlati