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?
Tak, niestety API Web jest zupełnie inna zwierząt teraz w fazie beta. Domyślna operacja dostawcy spoiwa to metoda abstrakcyjna. –
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