2

非常に単純な質問ですが、おそらくそれほど単純な答えではありません。JSON を投稿します。

public void Post(Model1 model1, Model2 model2)
{}

model1 には値が設定されていますが、model2 には設定されていません (null)。

public void Post(Model2 model2, Model1 model1)
{}

ここで、model2 は設定されていますが、model1 (null) は設定されていません。

なんで?

編集

2 つのパラメータの理由は? Model2 は Model1 から参照されていましたが、うまくいきませんでした。その時、私はそれらを分割しました。

編集

右。上記の質問への回答に感謝します。元のセットアップが機能しなかった理由がここにあります。私はもうフォームの世界ではありません。Jsonを投稿します。モデルに子オブジェクトがある場合は、json に子オブジェクトを投稿します。

与えられた

class ProductEditModel {
      public string Name {get; set;}
}

class UserEditModel {
      public string User {get; set;}
      public ProductEditModel Product {get; set;}
}

以下

{"user": "philip", "product.name": "barbie"}

動作しません。js で同等のセマティックをセットアップしようとすると、エラーが発生することさえあります

{user: "philip", product.name: "barbie"}

次のどちらも機能しません。なぜ機能するのかわかりません。

{"user": "philip", "productname": "barbie"}


{"user": "philip", "product_name": "barbie"}

何が機能し、私の職業を保持することは明らかです

{"user": "philip", "product": {"name": "barbie"}}

私を蹴ってください。

注意してください!上記のモデルに対応する編集を行うと、以下は機能しません。

{"user": "philip", "ProductEditModel": {"name": "barbie"}}
4

1 に答える 1

2

どのバージョンを使用しているかはわかりませんが、複雑な型をバインドするとき、Web API は要求の本文全体を単一のエンティティ、つまり単一のアクション パラメーターを表すと見なすという一般的な規則に落ち着きました。あなたの場合、複数の をバインドしたい場合は、カスタム バインディング オブジェクトを導入するか、または他のコレクション タイプModelにバインドすることができます。Model[]

于 2012-05-31T22:04:01.213 に答える