0

初歩的な質問をする危険を冒して、モデルがバインドされている必要がある webapi エンドポイントに投稿する URL をテストしようとしていますが、この MVC は次のとおりです。

    public ReturnModel GetSomeInformation( ValidationPackage validationPackage)
    {
        return new ReturnModel();
    }

ValidationPackage は次のようなものです。

public class ValidationPackage : BaseValidationPackage
{
    [DataMember]
    public int ClubId { get; set; }
}

したがって、これをテストしたり、それを必要とする私の iOS 担当者のためにデモを行ったりしようとすると、次のようにバインドされません。

http://[local]/api/meet/GetInformation?ClubId=152

メソッドのシグネチャをこれに変更すると、すべて正常に動作します。

public ReturnModel GetSomeInformation( int clubId) {...}

しかし、どういうわけか、最初のバージョンは機能するはずであり、webapi は MVC の単なる実装であるという印象を受けていたため、何か間違ったことをしているという印象を受けました。

4

2 に答える 2

1

MVC (および Web API) の単純型 ( stringintGuidなど) でのモデル バインドの既定の動作は、クエリ文字列からバインドされます。一方、オブジェクトはリクエストのボディを使用してバインドされます。FromBodyAttributeまたはFromUriAttribute(必要に応じて)を使用して、パラメーターごとにこの動作を変更できます。

public ReturnModel GetSomeInformation([FromUri]ValidationPackage validationPackage)
{
    return new ReturnModel();
}
于 2013-08-05T14:28:21.790 に答える