私は次のアクション署名を持っています
[ValidateInput(false)]
public HttpResponseMessage PostParam(Param param)
Paramは次のようになります。
public class Param {
public int Id { get; set;}
public string Name { get; set; }
public string Choices { get; set; }
}
これが問題です-ワイヤーを介して来るのはこのようなものです
{
Id: 2,
Name: "blah",
Choices: [
{
foo: "bar"
},
{
blah: "blo"
something: 123
}
]
}
「Choices」を逆シリアル化したくない-文字列として保存したい(はい、セキュリティへの影響を理解しています)。当然のことながら、デフォルトのバインダーはこれを認識していないため、エラーが発生します。
これで、Asp Mvcを使用すると、特定のModelBinderを作成するのはかなり簡単になります。私は
- DefaultModelBinderを継承します
- プロパティの逆シリアル化を自分のものでオーバーライドする
Application_Start
私の使用でバインダーを設定しますBinders.Add
Web Apiの場合と同様に、これは別のプロセスのようです。System.Web.DefaultModelBinderにはオーバーライドするものがなく、を使用して接続することはできませんBinders.Add
。周りを見回してみましたが、実際にやりたいことをどうやってやるのかよくわかりませんでした。どうやらModelBindersAPIがBetaとRTMに比べてかなり変更されているため、これはさらに複雑です。そのため、古い情報がたくさんあります。