VisualStuidioCommunity2015/Fw4.5.2/C#
お約束で「Hello World」の出力です。
コントローラーとアクションメソッド
ASP.NET Webフォームは「ページコントローラ方式」で個々のページでリクエストを処理していましたが、ASP.NET MVCでは「フロントコントローラ方式」で、リクエストを1カ所で受け取り、URLから個々のコントローラークラスに振り分けます。
コントローラークラスには複数のアクションメソッドが定義されていて、URLからどのアクションメソッドが実行されるかが決定します。
アクションメソッドではユーザーからのリクエストに応じた処理を行って、ビューを表示するなどのレスポンスを返します。
つまりコントローラークラスとアクションメソッドがないと何も始まらないということです。
コントローラーの作成
まずはコントローラークラスを作成します。Conrollersフォルダを右クリックしコンテキストメニューより 「追加」 > 「コントローラー」 を選択します。
「スキャンフォールディングを追加」ダイアログより「MVC 5 コントローラー -空」を選択します。
コントローラー名を表示するダイアログが表示されますので、「HelloControler」とします。
以上でControllersフォルダにHelloControl.csファイルが作成されました。
コントローラークラスの約束事ですが
コントローラーの名前には必ず「Controller」というサフィックスを付けます。
コントローラー名はこの「Controller」を除いた部分になります。(「HelloController」のコントローラー名は「Hello」になります。)
Controllerクラスを継承します。
アクションメソッドの定義
次にコントローラークラスにアクションメソッドを定義していきます。従来のASP.NET Webフォームでは、ユーザーがボタンをクリックしたときの処理は各ページのコードビハインドにイベントとして記述されていました。
ASP.NET MVCでは、ユーザーがボタンをクリックしたときの処理はコントローラクラスにアクションメソッドとして記述します。
それではHelloControllerに「Hello World」を出力するアクションメソッドを定義します。
コントローラー「HelloController」のコードを見てみると、最低限のコードが記載されています。
デフォルトで用意されているIndexメソッドをまねて、以下のようなShowHelloMessageアクションメソッドを定義します。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Practice01_Begin.Controllers { public class HelloController : Controller { // GET: Hello public ActionResult Index() { return View(); } public ActionResult ShowHelloMessage() { //ControllerクラスのContentメソッドはActionResult派生クラスであるContentResultクラスを返す。 //ContentResultクラスは引数に指定した文字列をテキスト形式で出力する。 return Content("Hello World"); } } }アクションメソッドの条件は、コントローラークラスに定義されている、戻り値がActionResultでpublicなメソッドです。
コントローラークラスに定義されているpublicなメソッドはすべてアクションメソッドと見なされます。
戻り値がActionResultでないpublicメソッドを定義する場合は、NonActionAttribute属性を付ける必要があります。
ContentメソッドはControllerクラスのメソッドで、引数に指定した文字列をテキスト形式で出力します。
以上でコントローラーとアクションメソッドの作成が終了しました。
IEでデバッグ実行し、起動したページのアドレスに「http://localhost:12345/Hello/ShowHelloMessage」と入力します。 ※「12345」の部分は実行するたびに変わります。
「Hello World」が表示されます。
0 件のコメント:
コメントを投稿