2013-02-05 9 views
20

ASP.Net Web APIでカスタムモデルバインダーを作成したいと思います。これを最初からやる方法には多くのリソースがありますが、私は既存の機能を活用したいと考えています。ASP.net Web APIのMVCのDefaultModelBinderに相当するものは何ですか?

私はコードプレックスのソースを見回し、そこに多くのモデルバインダーを見ることができますが、ほとんどが封印されています...そして、それでもどちらの状況で使用されるのかは分かりません。ここで

は私のAPIメソッドヘッダである:

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

それはすべての基本的な性質を埋めて、そのI HTTPリクエストヘッダに基づいていくつかの余分な値を設定した後、私は何をしたいことはmodelbinder傍受基本的にありクライアント側で設定されます。

私が言うように、私はカスタムモデルバインダとモデルバインダプロビジョナを作成し、配線することに満足しています。問題があるビットは、提供されている既存の機能を再利用しようとしています。

おかげで、ピート

答えて

10

WebApiのための拡張ポイントについてはこちらをご覧ください。

WebApiにMVCのDefaultModelBinderの正確な同等物はありません。

[FromBody]アトリビュートを使用している場合は、FormatterParameterBindingが呼び出され、MediaTypeFormatterがモデルの構築に使用されます。

に渡すだろうModelBinderParameterBindingを呼び出すURIパスとURL(クエリーパラメータ)のためのモデルバインダーのいずれかあなたの例FieldIValueProviderまたはIModelBinder ...だから

...

(コンテンツタイプのネゴシエーションの結果に応じて)XmlMediaTypeFormatter,JsonMediaTypeFormatterまたはFormUrlEncodedMediaTypeFormatterのいずれかを使用します。したがって、それぞれの設定を使用してこれらのシリアル化動作をカスタマイズすることは、あなた次第です。 JSON.NETの設定...または独自のまたはラップMediaTypeFormatterを実装します。

appIdはおそらくIValueProvider ... ElementalValueProviderのように渡されます。

+0

ありがとうございます...あなたはまさに正しいです。私は木の木を見ていませんでした。今私はちょうどayncのタスクの継続を管理する正しい方法を理解しなければならないと私はソートされていると思う:) –

関連する問題