書籍転載について
本コーナーは、秀和システム発行の書籍『ASP.NET MVC 5 実践プログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。
『ASP.NET MVC 5 実践プログラミング』の詳細や購入は秀和システムのサイトをご覧ください。
Microsoftの標準Web開発プラットフォーム、ASP.NET MVCを初めて学ぶ人のための本です。C#を最低限理解できている人を対象に、ASP.NET MVCプログラミングのための環境構築、大まかな開発の流れ、ASP.NET MVCを構成する基本要素Model/View/Controllerそれぞれの開発テクニック、ルーティング、JavaScript/CSSによるクライアントサイド開発、単体テスト、認証のノウハウを解説します。Java、PHP、Rubyの経験者にもオススメ!
[導入編]Chapter1 イントロダクション
1-1 ASP.NETの全体像【2014年9月30日公開】
1-2 ASP.NET MVCとは?
1-2-1 Webフォームの問題点
1-2-2 ASP.NET MVCの特徴
1-2-3 ASP.NET MVCの主な機能【2014年9月30日公開】
1-3 ASP.NET MVC利用のための環境設定
1-3-1 前提となる環境
1-3-2 Microsoft Web Platform Installerによるインストール
1-3-3 ASP.NET MVCのソースコード
[導入編]Chapter2 ASP.NET MVCの基本
2-1 プロジェクトの作成
2-2 コントローラーの基本
2-2-1 コントローラークラスを作成する
2-2-2 ルーティングの基礎を理解する
2-2-3 補足:/App_Startフォルダー
2-3 ビューの基本
2-3-1 ビュー変数の設定
2-3-2 ビュースクリプトの作成
2-3-3 レイアウトの適用
2-4 モデルの基本
2-4-1 Entity Frameworkとは?
2-4-2 Entity Frameworkのデータモデル「Entity Data Model」
2-4-3 Entity Frameworkによるデータアクセス
2-4-4 データ取得の基本
[導入編]Chapter3 Scaffolding機能による開発
3-1 Scaffolding機能によるアプリケーション開発
3-2 一覧画面の作成(Indexアクション)
3-2-1 Indexアクションメソッド
3-2-2 Index.cshtmlビュースクリプト
3-3 詳細画面の作成(Detailsアクション)
3-3-1 Detailsアクションメソッド
3-3-2 Details.cshtmlビュースクリプト
3-4 新規登録画面の作成(Createアクション)
3-4-1 入力フォームの作成(Createアクション&Create.cshtml)
3-4-2 入力値の処理(Createアクション)
3-5 編集画面の作成(Editアクション)
3-5-1 Editアクションメソッド
3-5-2 Edit.cshtmlビュースクリプト
3-6 削除画面の作成(Deleteアクション)
3-6-1 Delete/DeleteConfirmedアクションメソッド
3-6-2 Delete.cshtmlビュースクリプト
[基本編]Chapter4 ビュー開発
4-1 Razor構文
4-1-1 コードナゲット(インライン式)
4-1-2 予約文字「@」のエスケープ
4-1-3 コードブロック
4-1-4 制御構文(コードブロック)
4-1-5 サーバーコメント【2014年10月1日公開】
4-2 フォーム関連のビューヘルパー
4-2-1 フォームを生成する - BeginFormメソッド【2014年10月1日公開】
4-2-2 ルート定義からフォームを生成する- BeginRouteFormメソッド【2014年10月6日公開】
4-2-3 モデルに関連付いた<input>、<textarea>要素を生成する- XxxxxForメソッド【2014年10月6日公開】
4-2-4 選択ボックス/リストボックスを生成する - DropDownListFor/ListBoxForメソッド【2014年10月7日公開】
4-2-5 列挙型から選択ボックスを生成する - EnumDropDownListメソッド【2014年10月7日公開】
4-2-6 選択ボックスの選択肢をグループ化する - SelectListクラス【2014年10月14日公開】
4-2-7 モデルと関連付かないフォーム要素を生成する - TextBox/Labelメソッドなど【2014年10月14日公開】
4-3 リンク/エンコード関連のビューヘルパー
4-3-1 ハイパーリンクを生成する - ActionLinkメソッド【2014年10月21日公開】
4-3-2 ルート定義からハイパーリンクを生成する - RouteLinkメソッド【2014年10月21日公開】
4-3-3 アプリケーションルートからの絶対パスを生成する - Url.Content/Action/RouteUrlメソッド【2014年10月28日公開】
4-3-4 HTMLエンコードを無効にする - Html.Rawメソッド【2014年10月28日公開】
4-4 テンプレート関連のビューヘルパー
4-4-1 テンプレートの標準の挙動【2014年11月4日公開】
4-4-2 テンプレートのカスタマイズ
4-4-3 テンプレートを決定する方法【2014年11月4日公開】
4-4-4 モデル単位にテンプレートを決定する - DisplayForModel/EditorForModelメソッド【2014年11月11日公開】
4-5 ビューヘルパーの自作
4-5-1 シンプルなビューヘルパー
4-5-2 MvcView.Helpers名前空間の登録
4-5-3 拡張メソッドによる定義
4-5-4 TagBuilderクラスの活用
4-5-5 応用:TagBuilderクラスによる複合的なタグの生成
4-5-6 Razor構文で作成するビューヘルパー
4-5-7 補足:インラインテンプレートの受け渡し
4-6 アプリケーション共通のデザインを定義する - レイアウト
4-6-1 レイアウトの作成
4-6-2 レイアウトを適用するさまざまな方法
4-6-3 レイアウトに複数のコンテンツ領域を設置する
4-6-4 レイアウトを入れ子に配置する
4-7 ビューの一部を再利用可能にする - 部分ビュー
4-7-1 部分ビューの基本
4-7-2 応答ストリームに直接出力する - RenderPartialメソッド
4-7-3 部分ビューに先立ってアクションを呼び出す - Action/RenderActionメソッド
4-8 ビューエンジン
4-8-1 ASPXエンジンの利用
4-8-2 ビューエンジンの無効化
4-8-3 ビューエンジンの自作
4-9 モバイル対応 - DisplayModes
4-9-1 デスクトップ&モバイル環境の振り分け
4-9-2 デバイス単位のビューの振り分け
4-9-3 補足:モバイル判定のしくみ
[基本編]Chapter5 モデル開発
5-1 データモデルの作成
5-1-1 基本的な規約
5-1-2 規約のカスタマイズ
5-1-3 Fluent APIによる規約のカスタマイズ
5-2 マイグレーション
5-2-1 マイグレーションの基本
5-2-2 補足:Update-Databaseコマンドのさまざまな用法
5-2-3 自動マイグレーション
5-2-4 マイグレーションファイルで利用できる主なメソッド
5-3 LINQ to Entities
5-3-1 LINQとは?【2014年11月11日公開】
5-3-2 データの検索条件を指定する - where句【2014年11月18日公開】
5-3-3 データを並べ替える - orderby句【2014年11月18日公開】
5-3-4 取得列を明示的に指定する - select句【2014年11月25日公開】
5-3-5 重複のないデータを取得する - Distinctメソッド【2014年11月25日公開】
5-3-6 特定範囲のデータだけを取得する - Skip/Takeメソッド【2014年12月2日公開】
5-3-7 先頭のデータを取得する - Firstメソッド【2014年12月2日公開】
5-3-8 データをグループ化する - group句【2014年12月9日公開】
5-3-9 エンティティ同士を結合する - join句【2014年12月9日公開】
5-4 データ取得/変更のためのその他の機能
5-4-1 関連を持ったエンティティの操作
5-4-2 生のSQL命令を直接指定する - SqlQuery/ExecuteSqlCommandメソッド
5-4-3 トランザクション処理を実装する
5-4-4 同時実行制御を実装する - Timestamp属性
5-5 入力値の検証
5-5-1 検証機能の基本
5-5-2 その他の検証属性
5-5-3 自作の検証属性を実装する(サーバーサイド)
5-5-4 自作の検証属性を実装する(クライアントサイド)
[基本編]Chapter6 コントローラー開発
6-1 モデルバインド
6-1-1 バインド項目の制限 - Bind属性
6-1-2 リストへのバインド
6-1-3 ファイルのアップロード
6-1-4 値プロバイダー
6-1-5 モデルバインダーの自作
6-2 ActionResult
6-2-1 標準のActionResult派生クラス
6-2-2 ビュースクリプトでページを生成する- ViewResultクラス
6-2-3 処理をリダイレクトする - RedirectResult/RedirectToRouteResultクラス
6-2-4 空のコンテンツを出力する - HttpStatusCodeResult/HttpNotFoundResult/HttpUnauthorizedResultクラス
6-2-5 アクションをそのまま終了する - EmptyResultクラス
6-2-6 テキストデータを出力する - ContentResultクラス
6-2-7 例:データベースの内容をタブ区切りテキストで出力する
6-2-8 例:データベースから動的にフィードを生成する
6-2-9 指定されたファイルを出力する - FilePathResultクラス
6-2-10 データベースに登録したバイナリデータを取得する - FileContentResult/FileStreamResultクラス
6-2-11 例:アクションメソッドで動的にPDF文書を生成する
6-2-12 ActionResult派生クラスの自作
6-3 状態管理
6-3-1 クッキーを取得/設定する - HttpCookieクラス
6-3-2 セッションを利用する - Sessionオブジェクト
6-3-3 一時データを保管する - TempDataオブジェクト
6-4 フィルター属性
6-4-1 フィルター属性の基本
6-4-2 カスタムエラーページを定義する - HandleError属性
6-4-3 HandleError属性で利用可能なプロパティ
6-4-4 出力キャッシュ機能を有効化する - OutputCache属性
6-4-5 リクエストパラメーターの妥当性を検証する- ValidateInput属性
6-4-6 クロスサイトリクエストフォージェリ対策を行う - ValidateAntiForgeryToken属性
6-4-7 SSL通信を強制する - RequireHttps属性
6-4-8 上位のフィルター指定を上書きする- OverrideXxxxx属性
6-5 フィルター属性の自作
6-5-1 承認フィルターの自作
6-5-2 例外フィルターの自作
6-5-3 アクション/結果フィルターの自作
6-5-4 コンテキストオブジェクト
6-5-5 アクション/結果フィルターの実行順序
6-6 セレクター属性
6-6-1 HTTPメソッドに応じてリクエストを処理する- HttpXxxxx属性
6-6-2 アクションメソッドを無効化する - NonAction属性
6-6-3 アクション名を明示的に宣言する - ActionName属性
6-6-4 セレクター属性の自作
[応用編]Chapter7 ルーティング
7-1 MapRouteメソッド
7-1-1 引数url - URIパターンの定義
7-1-2 引数defaults - 変数のデフォルト値
7-1-3 引数constraints - 制約条件
7-1-4 引数namespaces - コントローラークラスの検索先
7-1-5 制約条件の自作
7-1-6 特定のURIパターンをルートから除外する - IgnoreRouteメソッド
7-2 属性ルーティング
7-2-1 属性ルートの基本
7-2-2 任意のパラメーターとデフォルト値
7-2-3 制約条件を設定する
7-2-4 ルートプレフィックスを定義する - RoutePrefix属性
7-2-5 カスタムの制約条件を付与する
7-3 エリア(区分)
7-3-1 エリアの作成方法
7-3-2 エリア情報の定義
7-3-3 名前空間の登録
7-3-4 エリア間のリンク
[応用編]Chapter8 クライアントサイド開発
8-1 バンドル&ミニフィケーション
8-1-1 バンドル情報の定義
8-1-2 JavaScriptライブラリ/スタイルシートのインポート
8-1-3 コンテンツデリバリーネットワークの利用
8-2 JavaScriptライブラリ/フレームワーク
8-2-1 JavaScriptライブラリのインストール方法
8-2-2 JavaScriptライブラリのIntellisense機能
8-2-3 jQuery
8-2-4 jQueryプラグイン
8-2-5 Bootstrap【2014年12月16日公開】
8-2-6 TypeScript
8-3 Ajax開発
8-3-1 ページを部分更新する - PartialViewResultクラス
8-3-2 ぐるなびWebサービスを利用する
8-3-3 補足:Ajax呼び出しの際に進捗バーを表示する
8-3-4 Ajax通信でJSONデータを利用する(サーバーサイド編)
8-3-5 Ajax通信でJSONデータを利用する(クライアントサイド編)
[応用編]Chapter9 単体テスト
9-1 単体テストの基本
9-2 モックライブラリMoq
9-2-1 Moqの基本
9-3 さまざまなテスト
9-3-1 フィルター属性のテスト
9-3-2 セレクター属性のテスト
9-3-3 ビューヘルパーのテスト
9-3-4 ルーティングのテスト
9-3-5 IsAjaxRequestメソッドのテスト
9-4 データベースを伴うテスト
9-4-1 リポジトリクラスの準備
9-4-2 単体テストの準備/実行
9-4-3 補足:依存性リゾルバー
[応用編]Chapter10 高度な話題(認証/国際化/クラウド対応)
10-1 ASP.NET Identity
10-1-1 ASP.NET Identityリリースの背景
10-1-2 ASP.NET Identityの基本
10-1-3 ASP.NET Identityの基本設定
10-1-4 新規ユーザーの作成
10-1-5 ログイン処理
10-1-6 電子メールによるアカウント確認
10-1-7 パスワードのリセット
10-1-8 アカウントのロックアウト
10-1-9 プロファイル情報の追加
10-1-10 ロール単位のアクセス制限
10-1-11 ソーシャルアカウントによるサインイン
10-2 国際化対応
10-2-1 国際化対応の基本的な手順
10-2-2 ローカルリソースの定義
10-2-3 リソース取得のためのビューヘルパー
10-2-4 データモデルの国際化対応
10-3 Microsoft Azureへの配置
10-3-1 Microsoft Azureの準備
10-3-2 アプリケーションの配置