2013-02-05 19 views
20

ASP.Net Web API'sinde özel bir model bağlayıcı oluşturmak istiyorum. Bunu sıfırdan nasıl yapacağımıza dair birçok kaynak var, ancak mevcut işlevselliği kullanmak istiyorum.ASP.net Web API'sinde MVC'nin DefaultModelBinder eşdeğeri nedir?

Kodplex kaynağında etrafa baktım ve orada birçok model bağlayıcı görebiliyorum ama çoğu mühürlü ... ve hatta hangi durumlarda kullanılacağını çalışamıyorum. İşte

benim API yöntemi başlığıdır:

public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field) 

Ne yapmak istiyorum tüm temel özelliklerini doldurulan sonra ModelBinder kesmek temelde, sonra http istek başlıklarına dayanarak bazı ekstra değerleri ayarlamak ben Müşteri tarafında olacak.

Söylediğim gibi, özel modelbinderler ve modelbinderprovider'lar yaratma ve bunları kablolama konusunda rahatım, bir sorunla karşılaştığım şey, sağlanan mevcut işlevselliği yeniden kullanmaktır.

Teşekkürler Pete

cevap

10

WebApi için uzatma noktaları için buraya bir göz atın.

WebApi'de MVC'ler DefaultModelBinder için tam bir eşdeğer yoktur.

[FromBody] özniteliğini kullanıyorsanız, FormatterParameterBinding özniteliği çalıştırılacak ve modelinizi oluşturmak için MediaTypeFormatter kullanılacaktır.

kişiye gönderilecek ModelBinderParameterBinding çağıracağı URI yolu ve URL (sorgu parametreleri) model bağlama maddeleri ya da örneğin Field bir IValueProvider veya IModelBinder ... Yani

...

(içerik türü anlaşmasının sonucuna bağlı olarak) şunlardan birini kullanır: XmlMediaTypeFormatter, JsonMediaTypeFormatter veya FormUrlEncodedMediaTypeFormatter. Bu nedenle, ilgili ayarlarını kullanarak bunların serileştirme davranışını kişiselleştirmeniz size bağlıdır. JSON.NET ayarları ... veya kendi sarılmış MediaTypeFormatter'ınızı uygulayın.

Örneğinizde appId muhtemelengibi IValueProvider'a aktarılacaktır.

+0

Çok teşekkür ederim ... tam olarak haklısınız. Ağaçlar için odun görmedim. Şimdi sadece aync görevi devam ettirmek için doğru yolu bulmalıyım ve sanırım sıralıyım :) –

İlgili konular