次のエラーが表示されます。
パラメーター ディクショナリには、'RecipeTracker.Controllers.StandardDirectionsController' のメソッド 'System.String Get(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。
グローバルファイルでこれを定義しています:
protected void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional });
}
これは私のコントローラーです:
App_Data.databaseDataContext _context = new App_Data.databaseDataContext();
// GET api/<controller>
public List<string> Get()
{
var direction = (from d in _context.ViewStandardDirections("-1")
select d.Direction);
return direction.ToList();
}
// GET api/<controller>/5
public List<Models.DirectionChoices> Get([FromUri]string q)
{
var choices = (from i in _context.ViewStandardDirections(q)
select new Models.DirectionChoices
{
text = i.Direction
});
return choices.ToList();
}
これは私が試して失敗したURLです:
http://localhost:9328/api/standarddirections/heat
/heat 部分を削除すると、データベースに問題なくクエリが実行されます。別の投稿の提案に基づいて [FromUri] を追加しましたが、それがない場合と同じように動作します。