ASP.Net Web API 2を使用してREST APIを構築しています。クエリ文字列から複雑なオブジェクトを受け取るGETエンドポイントがあります。Web API 2 - 複雑なクエリ文字列にデフォルト値を設定するパラメータ
public async Task<IHttpActionResult> GetAsync([FromUri]SpendingAccountSearchParams spendingAccountSearchParams) {...}
検索オブジェクトがNULL可能か、デフォルト値はオブジェクトのコンストラクタに移入しているのいずれかである特性をたくさん持っています。例えば:私は、クエリ文字列にパラメータのうちの少なくとも1を渡すと
public SpendingAccountSearchParams()
{
AsOfDate = DateTime.Now;
Skip = 0;
Top = 20;
}
はその後、私のSpendingAccountSearchParamsは、コントローラに読み込まれますオブジェクトとすべてのデフォルト値が正しく設定されています。
しかし、値のいずれも渡さないと、SpendingAccountSearchParamsオブジェクトはコンストラクタでnullになります。
クエリ文字列パラメータが渡されないと、自動的にすべてのプロパティがデフォルト値になるように強制できますか?
私はこれと同等のものをしたいが、明らかにそれが有効でないと動作しません:
public async Task<IHttpActionResult> GetAsync([FromUri]SpendingAccountSearchParams? spendingAccountSearchParams = new SpendingAccountSearchParams()) {...}
それはdoesnの場合、私は、コントローラ内のIがnullかどうかを確認し、新しいオブジェクトを作成することができることを知っていますこれは1つのエンドポイントの1つの例に過ぎません。最終的に私は、さまざまな検索パラメータを持つエンドポイントをたくさん用意しています。すべてのエンドポイントを自動的に検索したいと思っています。
ご協力いただければ幸いです。
ありがとうございます!
モデルバインダーを使用する必要があります。 – CodeNotFound
Modelバインダーはなんでよく分かりませんが、もっと詳しい情報を教えてください。 – jkruer01