Dave Ward によるこの投稿 ( http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/ ) を読み、単純な Web API コントローラーをまとめようとしています。それはビューモデルを受け入れますが、何かが私にはクリックされません。
ビューモデルをいくつかの DateTime プロパティを持つオブジェクトにしたい:
public class DateRange
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
ストック Web API プロジェクトで何も変更せずに、値コントローラーを次のように編集します。
public IEnumerable<float> Get()
{
DateRange range = new DateRange()
{
Start = DateTime.Now.AddDays(-1),
End = DateTime.Now
};
return Repo.Get(range);
}
// GET api/values/5
public IEnumerable<float> Get(DateRange id)
{
return Repo.Get(range);
}
ただし、このコントローラーを使用しようとすると、次のエラーが発生します。
Multiple actions were found that match the request:
System.Collections.Generic.IEnumerable
1[System.Single] FEPIWebService.Controllers.ValuesController System.Collections.Generic.IEnumerable 型の Get()1[System.Single] Get(FEPIWebService.Models.DateRange) on type FEPIWebService.Controllers.ValuesController
を叩くとこのメッセージが出ます
/api/values
また
/api/values?start=01/01/2013&end=02/02/2013
最初の get アクションと 2 番目の get アクションの間のあいまいさを解決するにはどうすればよいですか?
さらなる信用のために、私がこの行動をとった場合
public void Post(DateRange value)
{
}
モデルバインディングがDateRangeパラメータを構築するように、jQueryを使用してそのオブジェクトにStartプロパティとEndプロパティを投稿するにはどうすればよいですか?
ありがとう!
クリス