Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET C#

ASP.NET MVCでURLのパラメータを取得する仕組み

投稿日:

 

<目次>

(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);
}

 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET, C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

C#で型をStringからintに変更する方法~TryParseメソッドによる型変換~

<目次> (1) C#で型をStringからintに変更する方法  (1-1) 構文  (1-2) サンプルプログラム  (1-3) プログラム補足「'{0}’や'{1}’」に …

Entity Frameworkのコードファーストとデータベースファーストの特徴や違いについて

  <目次> (1) Entity Frameworkのコードファーストとデータベースファーストの特徴や違いについて  (1-1) データベースファースト  (1-2) コードファースト   …

SOAP通信の仕組みやHTTPプロトコルとの違いなど

  <目次> (1) SOAP通信の仕組みやHTTPプロトコルとの違いなど  (1-1) SOAPとは?  (1-2) SOAPを構成する要素  (1-3) SOAPの通信の仕組み&HTTP …

ASP.NETのbootstrapとは?概要と入手・適用方法のご紹介

  <目次> (1) ASP.NETのbootstrapとは?概要と入手・適用方法のご紹介  (1-1) bootstrapとは?  (1-2) bootstrapの入手方法~プロジェクトへ …

ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld

<目次> (1) ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld  (1-1) ASP.NET MVC5とは?  (1-2) MVCのアーキテクチャ概要  (1-3) ASP. …

  • English (United States)
  • 日本語
Top