2012-04-12 12 views
8

Niedawno zadałem pytanie here o przepełnieniu stosu dotyczące znalezienia odpowiedniego punktu rozszerzenia dla wiązania modelu w interfejsie API sieci Web. Korzystanie z niestandardowego dostawcy/IModelBinder daje mi pełną kontrolę nad wiązaniem modelu i dostępem do dostawców wartości.Jak wywołać domyślne powiązanie modelu w niestandardowym segregatorze w interfejsie API WWW MVC4?

Jednak to naprawdę zbyt duża kontrola. Chcę tylko kontrolować sposób mapowania kilku wartości i nie chcę ręcznego kodowania powiązań modelu, który w przeciwnym razie działałby dobrze.

Ostatecznie jest to, co chciałbym być w stanie to zrobić:

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 
} 

Wygląda to dość trudno dostać Ahold dostawcy domyślnej dla WebAPI. Czy ktoś wie, czy jest dostępny i jak powinien być dostępny tutaj w niestandardowym segregatorze model?

Odpowiedz

-1

Nie jestem pewien, ale w sieci Web API w MVC można dziedziczyć DefaultModelBinder i nazywają base.BindModel

+1

Tak, niestety API Web jest zupełnie inna zwierząt teraz w fazie beta. Domyślna operacja dostawcy spoiwa to metoda abstrakcyjna. –

+0

Ma to znacznik 'asp.net-web-api', który ma bardzo różne powiązanie modelu niż' MVC', więc ta odpowiedź w ogóle nie jest pomocna. – atconway

Powiązane problemy