私はこのようなモデルを持っています:
public class Model
{
[MaxLength(500)]
public string UserEmail { get; set; }
[Required]
[MaxLength(100)]
public string Product { get; set; }
// ... And other 10 parameters
public byte[] StatisticsData { get; set; }
public byte[] UserXmlFile { get; set; }
}
Api は、multipart/formdata を使用してクライアントからバイナリ データを含む統計情報を取得する必要があります。モデルが異なるいくつかの同様の方法があるため、次のようになります。
- モデルごとに独自の MediaTypeFormatter を書きたくない
- 検証と簡単なバインディングのために、標準のバインディングモデルを単純なフィールドに維持したい
- このような API ヘルプ ジェネレータがあります。したがって、あらゆる状況でコントローラーでリクエストを解析するのは良くありません。
mvc スタイルでバインドしたい :)
[HttpPost]
public HttpResponseMessage SiteMark(Model model)
{
このソリューションを読みましたWeb API モデルバインダーは HttpPostedFileBase で動作しませんか? 、しかし、それは私の状況にはあまり適していないようで、単純なフィールドバインディングの問題を解決しません。
単純なフィールドに標準バインディングを使用するカスタム ModelBinder を作成することを考えています。これにはデフォルトの mvc バインダーを使用することもできます (webapi のデフォルト バインディングは、独自のコードでは再利用できないようです)。そして、カスタム コードによってサイクル内のすべてのバイナリ データを読み取り、それをバイナリ フィールドにマップします。
多分私は何かが足りないので、もっと簡単な解決策がありますか?