<目次>
(1) ASP.NET MVCでURLのパラメータを取得する仕組み
(1-1) 前提知識:URLにパラメータを埋め込む方法
(1-2) URLのパラメータ取得方法
(1-3) 確認テスト
(1-4) サンプルプログラム
(1) ASP.NET MVCでURLのパラメータを取得する仕組み
(1-1) 前提知識:URLにパラメータを埋め込む方法
取得方法を確認する前に、まずはパラメータがどのように渡されるか?を簡単にご紹介します。既に知っている方は読み飛ばして頂いて構いません。
以下のように「①URLに埋め込む」や「②クエリパラメータを渡す」といった方法があり、いずれもコントローラー(Controller)のアクションメソッドのインプット情報となります(何かしらの形で、サーバ側の処理で使われる)。
●①URLに埋め込む
次の例はURLに埋め込む型式の例です。
(例)
https://[ホスト名]:[ポート番号]/TextBooks/Trend/1
(図111)
URLに埋め込む場合は「RouteConfig.cs」に定義された形式に沿って与える必要があります。具体的には下図のように「MapRouteメソッド」の第二引数「url」でURLのパターンを指定しており、これがルーティング(リクエストの送り先の決定)に使われます。
(図112)
この例ではURLのパターンが「”{controller}/{action}/{id}”」となっており、先程の「https://[ホスト名]:[ポート番号]/TextBooks/Trend/1」に当てはめてみると、「TextBooks」はコントローラーの名前を表しており、「Trend」はそのコントローラーのアクションの名前を表しており、「1」は「id」パラメータの値を示している事が分かります。
(表)
controller |
TextBooks |
action |
Trend |
id |
1 |
この形式に沿ってURLにパラメータを与える事で、アプリケーション側(C#プログラム)でそのパラメータを受け取る事が出来ます。
●②クエリパラメータを渡す
クエリパラメータはURLの末尾に付与されるパラメータです。
例えば次のように「https://[ホスト名]:[ポート番号]/TextBooks/Trend」というURLの末尾に「?id=1」とパラメータを渡しています。「?」がURLとパラメータの区切り目になります。
(例)
https://[ホスト名]:[ポート番号]/TextBooks/Trend?id=1
(図121)
>目次にもどる
(1-2) URLのパラメータ取得方法
上記の①②のような形でHTTPリクエストに乗せて送られるパラメータをASP.NET側で取得する場合、いずれの場合でも取得方法は同じですが、コントローラー(Controller)のアクションメソッド(※注1)の引数として与えます。
(※注1)クライアントからのリクエストに対して、ビューを返却や、指定URLへのリダイレクト等の処理をするメソッド
(構文)
public ActionResult [アクションメソッド名]([パラメータの型] [パラメータ名])
{
return Content("parameter id = "+[パラメータ名]);
}
上記のようにアクションメソッドに引数がある場合、フレームワーク側で自動的に同名称のパラメータを探し、あった場合はその値をアクションに引き渡す動きをします。
(例)
例えば、Controller「HomeController.cs」でアクションメソッド「Index2」があると仮定すると、URLは「https://[ホスト名]:[ポート番号]/Home/Index2」のようになると思いますが、これに例えば「id」パラメータを渡した場合は下記のようなURLになります。
https://[ホスト名]:[ポート番号]/TextBooks/Trend/1
https://[ホスト名]:[ポート番号]/TextBooks/Trend?id=1
これを受け取る場合のコントローラー(Controller)側の記述は次のようになります。
public ActionResult Index2(int? id)
{
return Content("parameter id = "+id);
}
引数に、ブラウザから送られる「id」パラメータを受け取るための引数を定義し、それをContentメソッドで画面に表示する、という簡単なサンプルです。
int型の後ろに「?」を付けているのは、nullを許容するためです。これが無いと、URLに必ずパラメータを指定しないと行けなくなり、使い勝手が悪くなってしまうからです。
>目次にもどる
(1-3) 確認テスト
上記の「id」パラメータを取得し、画面に表示できるか?の確認テストをしている短い動画です。
↓
(動画)
>目次にもどる
(1-4) サンプルプログラム
アクションメソッド以外は、ほぼデフォルト状態のASP.NET MVCプロジェクトであるため、各プログラムの掲載は割愛しますが、もし最初から作りたい方は下記記事を参考に、まずは空の「ASP.NET MVCプロジェクト」を作り、その中のコントローラー(Controller)のアクションメソッドに下記を追記する事で、動画の内容と同じような確認が出来ると思います。
public ActionResult Index2(int? id)
{
return Content("parameter id = "+id);
}
>目次にもどる