ASP.NET Core MVCプロジェクト(.NET6.0)において、URLクエリ文字列(URLの"?"以降に追加されるパラメーター)をコントローラーで受け取る方法うを2通り解説します。
あらかじめ予定された名前のパラメーターを受け取る場合
コントローラーの引数として値を受け取ります。
URLの記述
https://example.com/Home/Index?param1=10¶m2=20
コントローラーの記述
パラメーターと同じ名称のメソッド引数に値が格納されています。
public IActionResult Index([FromQuery] int? param1, [FromQuery] int? param2) {
//コントローラー引数としてクエリ文字列を受け取り。
//パラメーター名と引数名を一致させる必要がある。
Console.WriteLine(param1); // 10
Console.WriteLine(param1); // 20
return View();
}
名前が未定のパラメーターを受け取る場合
Request.QueryにURLパラメーターが連想配列としてバインドされているので利用します。
URLの記述
https://example.com/Home/Index?param1=10¶m2=20
コントローラーの記述
こちらの方法では、引数をあらかじめ指定する必要がなく、動的にパラメーターを受け取ることが出来ます。
public IActionResult Index() {
var params = Request.Query;
Console.WriteLine(params["param1"]); // 10
Console.WriteLine(params["param1"]); // 20
return View();
}