0

現在、1 つのプロパティがオンになっている標準クラスがあります。

public class RangeProperties
{
    public string ItemNumber { get; set; }
}

これは、次のように、引数としてコントローラーに入力されます。

    public Task<HttpResponseMessage> GetItems(RangeProperties rangeProperties)

コントローラーにブレークポイントを設定したので、それが入っていることがわかりますが、rangeProperties は常に null です。

私はそのようにコントローラを呼び出しています

   http://localhost:8383/api/GetItems?ItemNumber=test

ItemNumber を int および int として更新しようとしましたか? まだ何もありません。私もさまざまなケースを試しました。

rangeProperties が null にならないことを期待していました。

rangeProperties に多数のプロパティを保持することを望んでいました。これらのプロパティはクエリ文字列から入力されます。何かを送信しないと、内部のプロパティは null になります。

しかし、現在、1つのプロパティでも機能していません。

私が間違っていることを知っている人はいますか?

私はasp.net Web APIを使用していますが、これもasp.net mvcに似ていると思います。

注目すべき点の 1 つは、コントローラーを (string itemNumber) に置き換えると機能することです。ただし、複雑な型の場合、自動入力されません。

ありがとう

4

1 に答える 1

3

これを試して :

public Task<HttpResponseMessage> GetItems([FromUri]RangeProperties rangeProperties)

既定では、Web Api は要求のクエリ文字列で単純型を読み取り、要求の本文で複合型を読み取ります。あなたの場合、クエリ文字列で複合型の値を渡そうとするためRangePropertiesFromUriAttribute.

FromBodyAttribute投稿リクエストの本文に int または string 値がある場合、反対の属性は です。

于 2013-10-22T16:27:49.643 に答える