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

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

関連記事

ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法

  <目次> (1) ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法  (1-1) やりたい事の整理  (1-2) ViewModelを使った複数モデルの連携 …

C#でファイルを1行ずつ読み込み処理を行うサンプルプログラム

<目次> (1) C#でファイルを読み込み処理を行うサンプルプログラム  (1-1) 構文  (1-2) サンプルプログラム  (1-3) サンプルプログラムの補足 (1) C#でファイルを読み込み処 …

C#のDB接続時のエラー(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

<目次> (1) 記事の目的  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対策   (1-3-1) SQLServer:リモート接続を有効化   (1-3-2) SQLSe …

ASP.NET MVC(C#)でHelloWorldする手順

<目次> (1) ASP.NET MVC(C#)でHelloWorldする手順  (1-1) プロジェクトの作成  (1-2) Controller(コントローラー)の作成  (1-3) Veiw(ビ …

Xamarin.Formsのプロジェクトの構成について~各ファイルの役割や概要について~

<目次> (1) Xamarin.Formsのプロジェクトの構成について  (1-1) プロジェクト構造の概要  (1-2) プロジェクトの初期ファイルの一覧 (1) Xamarin.Formsのプロ …

  • English (United States)
  • 日本語
Top