25

ASP.Net Web API のモデル バインディングは、MVC でサポートされるのと同じ最小レベルの機能でバインディングをサポートするはずだという印象を受けました。

次のコントローラーを使用します。

public class WordsController : ApiController
{
    private string[] _words = new [] { "apple", "ball", "cat", "dog" };

    public IEnumerable<string> Get(SearchModel searchSearchModel)
    {
        return _words
            .Where(w => w.Contains(searchSearchModel.Search))
            .Take(searchSearchModel.Max);
    }
}

public class SearchModel
{
    public string Search { get; set; }
    public int Max { get; set; }
}

私はそれを要求しています:

http://localhost:62855/api/words?search=a&max=2

残念ながら、モデルは MVC のようにバインドしません。私が期待するように、これが拘束力を持たないのはなぜですか? アプリケーションにはさまざまなモデル タイプが含まれます。MVC の場合のように、バインディングが機能するのであればいいと思います。

4

2 に答える 2

26

これを見てください:WebAPIがパラメーターバインディングを行う方法

複雑なパラメーターを次のように装飾する必要があります。

public IEnumerable<string> Get([FromUri] SearchModel searchSearchModel)

また

public IEnumerable<string> Get([ModelBinder] SearchModel searchSearchModel)
于 2012-06-02T17:17:49.643 に答える