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#のlockとは?意味や使い方とサンプルプログラムをご紹介

  <目次> (1) C#のlockとは?意味や使い方とサンプルプログラムをご紹介  (1-1) 概要  (1-2) 構文  (1-3) サンプルプログラム  (1-4) lockステートメ …

C#で配列に特定の値があるか?をチェックする方法を2つご紹介~ContainsとLINQ~

<目次> (1) C#で配列に特定の値があるか?をチェックする方法  (1-1) 方法①:ListクラスのContainsメソッドを使う方法   (1-1-1) 構文   (1-1-2) サンプルプロ …

BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)

  <目次> (1) BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)  (1-1) 前提条件  (1-2) 確認ポイント   (確認①)Bundl …

C#のIEnumerableとは?使い方(foreachでの要素取り出し)を順を追って解説

<目次> (1) C#のIEnumerableとは?使い方(foreachでの要素取り出し)を順を追って解説  (1-1) IEnumerableとは?  (1-2) IEnumerableの実装の流 …

no image

C#でコンソールにパスワード入力する際のマスキング処理の実装例のご紹介

  <目次> (1) C#でコンソールにパスワード入力する際のマスキング処理の実装例のご紹介  (1-1) 構文  (1-2) サンプルプログラム (1) C#でコンソールにパスワード入力す …

  • English (United States)
  • 日本語
Top