4

私はこのようなモデルを持っています:

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 を使用してクライアントからバイナリ データを含む統計情報を取得する必要があります。モデルが異なるいくつかの同様の方法があるため、次のようになります。

  1. モデルごとに独自の MediaTypeFormatter を書きたくない
  2. 検証と簡単なバインディングのために、標準のバインディングモデルを単純なフィールドに維持したい
  3. このような API ヘルプ ジェネレータがあります。したがって、あらゆる状況でコントローラーでリクエストを解析するのは良くありません。

mvc スタイルでバインドしたい :)

[HttpPost]
public HttpResponseMessage SiteMark(Model model)
{

このソリューションを読みましたWeb API モデルバインダーは HttpPostedFileBase で動作しませんか? 、しかし、それは私の状況にはあまり適していないようで、単純なフィールドバインディングの問題を解決しません。

単純なフィールドに標準バインディングを使用するカスタム ModelBinder を作成することを考えています。これにはデフォルトの mvc バインダーを使用することもできます (webapi のデフォルト バインディングは、独自のコードでは再利用できないようです)。そして、カスタム コードによってサイクル内のすべてのバイナリ データを読み取り、それをバイナリ フィールドにマップします。

多分私は何かが足りないので、もっと簡単な解決策がありますか?

4

0 に答える 0