3

Web Api コントローラーで次のアクションを実行します。

public Data GetData(ComplexModel model)

モデルは

class ComplexModel
{
     Guid Guid1 { get; set;}
     Guid Guid2 { get; set;}
     string String1 { get; set;}
}

空の文字列や null などの Guid 型のカスタム バインダーを指定したいのですが、空の GUID にバインドし、null 許容型を使用したくありません。次のようにモデルバインダーを登録しようとしていました:

var pb = configuration.ParameterBindingRules;
pb.Insert(0, typeof(Guid), param => param.BindWithModelBinding(new GuidBinder())); 

しかし、それは呼び出されず、空の文字列を Guid 型に変換できないというエラー メッセージが表示され、モデルの状態が無効になります。

4

1 に答える 1

6

パラメーターの内容ではなく、コントローラーのアクションパラメーター自体(この場合)をParameterBindingRulesチェックすることを忘れないでください。モデルインスタンスを検証するには、パラメータバインディングを登録し、カスタムバインダーを使用して処理を行う必要があります。気が進まないにもかかわらず、プロパティをnull許容にする方がよいようです。ComplexModelComplexModelGuid

于 2012-11-21T16:17:25.830 に答える