2012-04-12 10 views
8

Hace poco formulé una pregunta here en Stack Overflow sobre cómo encontrar el punto de extensibilidad correcto para el enlace del modelo en la API Web API. El uso de un proveedor personalizado/IModelBinder me da un control total del enlace del modelo y el acceso a los proveedores de valor.¿Cómo puedo invocar el enlace de modelo predeterminado dentro de una carpeta personalizada en la API web MVC4?

Sin embargo, es realmente demasiado control. Solo quiero controlar cómo se asignan un par de valores y no quiero codificar manualmente el enlace del modelo que de otro modo hubiera funcionado bien.

En última instancia, esto es lo que me gustaría ser capaz de hacer:

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 
} 

Parece que es bastante difícil de ponerme en contacto con un proveedor predeterminado para el WebAPI. ¿Alguien sabe si es accesible y cómo se debe acceder aquí en una carpeta de modelo personalizado?

Respuesta

-1

No estoy seguro de API Web pero en MVC puede heredar de DefaultModelBinder y llame base.BindModel

+1

Sí, por desgracia, el API de Web es un animal totalmente diferente en este momento en la beta. La operación predeterminada del proveedor de carpetas es un método abstracto. –

+0

Tiene una etiqueta de 'asp.net-web-api' que tiene un modelo de encuadernación muy diferente de 'MVC', por lo que esta respuesta no es útil en absoluto. – atconway

Cuestiones relacionadas