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

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

関連記事

Entity Frameworkの使い方や導入手順をご紹介

  <目次> (1) Entity Frameworkの使い方や導入手順をご紹介  (1-1) 前提条件  (1-2) STEP0:ASP:NET MVCプロジェクトの準備  (1-3) S …

ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順

<目次> (1) ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順  (1-1) 新規プロジェクトを作成  (1-2) 参照の追加  (1-3) 単体テスト用のコードの記述  ( …

C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法+実際のソース例も掲載

<目次> (1) C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 (1 …

C#のコンソールアプリで引数を与えて実行する方法

<目次> (1) C#のコンソールアプリで引数を与えて実行する方法  (1-1) 設定箇所  (1-2) サンプルプログラム  (1-3) サンプルプログラムの補足 (1) C#のコンソールアプリで引 …

ASP.NETの単体テストプロジェクトを新規に作成する方法

<目次> (1) ASP.NETの単体テストプロジェクトを新規に作成する方法  (1-1) ASP.NET MVCにおける単体テスト機能について  (1-2) ASP.NET MVCにおける単体テスト …

  • English (United States)
  • 日本語
Top