ASP.NET MVCの基本
Controllerの基本
コントローラークラウスとは個々のリクエストに応じた処理を担うクラス。
ビジネスロジック(Model)を呼び出すのも、その結果を出力(View)に引き渡すのも、コントローラークラスの役割。
コントローラークラストは、リクエストの受信からレスポンスの送信までを一気に担うアプリケーションの司令塔のような存在。
Controllerクラスを作成する
Controllerクラスは
Controllerクラスを継承する
具体的な処理を記載するのはアクションメソッド
アクションメソッドの条件は以下の通り
- パブリックドメインであること
- staticメソッドでないこと
- 非バインド型パラメータを持たないこと
- 引数だけが異なるオーバーロード不可
アクションメソッドの戻り値はActionResultオブジェクト
ルーティングを理解する
ルーティングはリクエストURLに応じて処理の受け渡し先を決定すること、またその仕組みのこと。
ASP.NET MVCではクライアントからの要求を受け取るとまずはルーティングを利用して呼び出すべきコントローラー/アクションを決定しています。
ルーティング設定は下記の様に定義されており、アプリケーション開始のタイミングで呼び出されます。
まずはMapRouteというメソッドが呼び出され実行されます。
App_Start/RouteConfig.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcBasic
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
"{controller}/{action}/{id}"
Controllerはコントローラー名を、Actionはアクションメソッドの名前、IDはアクションメソッドに渡される任意のパラメータ(ユーザパラメータ)をそれぞれ表す。
これらのパラメータのデフォルト値の設定が
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional
の部分。
App_Startディレクトリ
ファイル | 概要 |
BundleController.cs | Javascript、CSSのバンドル情報 |
FilterConfig.cs | グローバルフィルター |
RouteController | ルート情報 |
IdentifyConfig.cs/Startpu.Auth.vs | 認証情報 |
Global.asax
Global.asaxはグローバルアプリケーションファイルと呼ばれ、アプリケーションレベルで発生する各種イベント(アプリケーションイベント)を処理するための役割を担う。
Virwの基本
ビューの最終的な表示はRazorテンプレートに委ねられる。
RazorはHTMLにC#,Visual Basicのコードを埋め込むためのしくみ(ビューエンジン)です。
以下の様な特徴がある。
- C#/Visual Basicの標準的な構文で、条件分岐や繰り返しの処理ができる
- ビューヘルパーで、フォーム要素やリンクなど簡潔に表現できる
- 共通的なデザインを再利用する機能を備える
View変数の設定
View変数をControllerクラスで定義しておくことでViewから@アノテーションを利用してその値を呼び出して利用することが出来る
View変数の設定
ViewBag.変数名 = Value
ビュー変数とは、ビュースクリプトに埋め込むべき値のことで、アクションメソッド(コントローラー)とビューとでデータを受け渡しするための橋渡し役となる。プログラム側で表示に必要なデータを用意しておき、ビュースクリプトではデータを埋め込む場所や表示方法などを定義する、という役割分担がView-Controllerの基本的な関係である。
Viewメソッドでビュースクリプトを呼び出す
Viewメソッドは、Contentメソッドと同じく、ActionResult派生オブジェクトを取得するためのヘルパーメソッドです。
引数なしで呼び出した場合には、
/View/Controller名/アクション名.cshtml
を呼び出そうとする。
- 式の値を表示するには「@...」
- コードブロックは「@{...}」」
ヘッダー、フッターなどは Views/Shared/_Layout.cshtml で定義されているものが呼び出されレンダリングされたものが最終的に表示されている。
レイアウトを利用することでヘッダー、フッター、サイドメニューなどのサイト共通デザインを一か所にまとめられるので以下の様なメリットがある。
- 個々のビュースクリプトでは、ページ固有のコンテンツに集中できる
- サイトデザインを変更する際にはレイアウトだけ変更すればよい
- 一貫したサイト構成を提供できるので使いがったも向上する
- 開発生産性、保守性、ユーザビリティのいずれも共通でデザインをレイアウトとして外部化することはメリットである
Modelの基本
Modelとは、ビジネスロジック全般を担当するコンポーネントのこと。もっとも、ASP.NET MVCではモデルに相当する機能は含まれていない。
モデルとは、特定のアプリケーションやインターフェースではなく、クラスがモデルの一部となるかどうかは、そのクラスが特定のインターフェースを実装するかどうか、または特定の基本クラスから派生するかどうかではなく、ASP.NET MVCアプリケーションにおいて果たす役割、アプリケーションのディレクトリ攻勢で決まる。