1

お客様がオブジェクトを作成および更新できるようにする.NETwebApiに基づくWebサービスを開発しています。モデルがコントローラーに渡されるとき、呼び出し元がnull / blank/0に設定することを望んでいたためにnull/blank / 0であるフィールドと、それがによって使用されるデフォルトであるためnull / blank/0であるフィールドをどのように区別しますか呼び出し元がそのフィールドに値を設定する意図がなかった場合のパラメーターのバインド?これに対処するための基準はありますか?

4

1 に答える 1

1

コントローラーの ModelState プロパティを確認するだけでよいはずです。WebAPI アクションが呼び出され、ModelState が有効な場合、すべてのパラメーターが URI から正常にバインドされたか、要求本文から逆シリアル化されたことを意味する必要があります。

注意点が 1 つあります。これは、WebAPI の既定のパラメーター バインドにのみ当てはまります。パラメータを異なる方法でバインドする独自のカスタム パラメータ バインディングを登録すると、すべての賭けが無効になります。

パラメータのプロパティとフィールドに関する限り、それらの処理方法を決定するのはフォーマッタです。デシリアライザーには、欠落しているメンバーに遭遇したときに 2 つのオプションがあります。スローするか、メンバーに 0/空白/null を設定することができます。プロパティを [Required] としてマークするか、データ コントラクト モデルを使用している場合は [DataMember(IsRequired=true)] を使用して、プロパティが欠落しているときにモデル状態エラーを追加するようフォーマッタに要求できます。

于 2013-01-10T22:27:47.947 に答える