モデルコレクション(/api/models
)に明白なアクセスを許可しながら、クエリパラメータベースのルート(/api/models?id=1
)とルートベースのルート(/api/models/1
)を同時にサポートする必要がありますか?FromQueryとFromRouteパラメータを同時にバインドする方法はありますか?
私のコントローラのルックス、このような(何か):
[Route("/api/{controller}")]
public class ModelsController : Controller
{
[HttpGet]
public Models[] GetModels([FromQuery]QueryOptions queryOptions)
{
//...
}
[HttpGet("{id:int}")]
public Model Get([FromRoute] int id)
{
//...
}
[HttpGet("?{id:int}")]
public Model Get2Try1([FromQuery] int id)
{
//Fails with ": The literal section '?' is invalid.
//Literal sections cannot contain the '?' character."
//Which makes sense after some reading...
}
[HttpGet]
public Model Get2Try2([FromQuery] int id)
{
//Fails with "AmbiguousActionException: Multiple actions matched.
//The following actions matched route data and had all constraints satisfied:
//GetModels and Get2Try2"
//Which I think I understand as well...the absence of optional params
//means ambiguous routing...
}
[HttpGet] //What here?
public Model Get2Try3([FromQuery] int id) //and/or here?
{
}
}
(宣言型ルーティングで)にいくつかの方法があるはずのように私は感じるが、これを達成。誰もこれらの行に沿って何かをしていますか?
また、現在のコードベースは、まもなくRTM/1.0にアップグレードするASP.NETコア(RC1)です。いずれの側の詳細も同様の可能性がありますが、どちらか/両方に興味があります。
これは私のために動作しませんだしません。 [FromRoute]として動作し、[FromQuery]として動作しません – neeohw