ISBN: 978-4-7980-4179-7
ASP.NET MVC 5実践プログラミング
| 著者 | 山田祥寛 |
|---|---|
| 出版社 | 秀和システム |
| 価格 | 3,500円(税別) |
| 判型 | B5変判・1色 |
| ページ数 | 568ページ |
| 発売日 | 2014年9月20日 |
| 対象レベル | 中級 |
ASP.NETのメインストリームフレームワークをマスターしよう
本書ではASP.NET MVC 初学者のために、基本的なフレームワークの構造からスキャフォールディング(自動生成)機能、ルーティング、ビューヘルパー、フィルター、モデルバインド、Ajax、単体テストの手法までを包括的に解説します。基礎はもちろん、さらにASP.NET Identityや国際化対応、Azureなども扱っています。本書掲載サンプルは、サポートサイトからダウンロードできます。更新履歴
- FAQ情報:2015年1月14日 更新
- 正誤訂正:2023年1月16日 更新
目次
- Chapter1 イントロダクション
- 1-1 ASP.NETの全体像
- 1-2 ASP.NET MVCとは?
- 1-2-1 Webフォームの問題点
- 1-2-2 ASP.NET MVCの特徴
- 1-2-3 ASP.NET MVCの主な機能
- 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 サーバーコメント
- 4-2 フォーム関連のビューヘルパー
- 4-2-1 フォームを生成する - BeginFormメソッド
- 4-2-2 ルート定義からフォームを生成する- BeginRouteFormメソッド
- 4-2-3 モデルに関連付いた<input>、<textarea>要素を生成する- XxxxxForメソッド
- 4-2-4 選択ボックス/リストボックスを生成する - DropDownListFor/ListBoxForメソッド
- 4-2-5 列挙型から選択ボックスを生成する - EnumDropDownListメソッド
- 4-2-6 選択ボックスの選択肢をグループ化する - SelectListクラス
- 4-2-7 モデルと関連付かないフォーム要素を生成する - TextBox/Labelメソッドなど
- 4-3 リンク/エンコード関連のビューヘルパー
- 4-3-1 ハイパーリンクを生成する - ActionLinkメソッド
- 4-3-2 ルート定義からハイパーリンクを生成する - RouteLinkメソッド
- 4-3-3 アプリケーションルートからの絶対パスを生成する - Url.Content/Action/RouteUrlメソッド
- 4-3-4 HTMLエンコードを無効にする - Html.Rawメソッド
- 4-4 テンプレート関連のビューヘルパー
- 4-4-1 テンプレートの標準の挙動
- 4-4-2 テンプレートのカスタマイズ
- 4-4-3 テンプレートを決定する方法
- 4-4-4 モデル単位にテンプレートを決定する - DisplayForModel/EditorForModelメソッド
- 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とは?
- 5-3-2 データの検索条件を指定する - where句
- 5-3-3 データを並べ替える - orderby句
- 5-3-4 取得列を明示的に指定する - select句
- 5-3-5 重複のないデータを取得する - Distinctメソッド
- 5-3-6 特定範囲のデータだけを取得する - Skip/Takeメソッド
- 5-3-7 先頭のデータを取得する - Firstメソッド
- 5-3-8 データをグループ化する - group句
- 5-3-9 エンティティ同士を結合する - join句
- 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
- 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 アプリケーションの配置
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.5 | 下から4行目 | 4刷 |
| Summy.js | Sammy.js | 2015/02/12 |
| p.9 | 本文下から2行目 | 11刷 |
| Controller(ModelとControllerとの橋渡し) | Controller(ModelとViewとの橋渡し) | 2019/08/08 |
| p.38 | Note ビュー変数を設定するもうひとつの方法 下から4行目 | 6刷 |
| ViewBagではビュー変数の名前を文字列として表しますので | ViewDataではビュー変数の名前を文字列として表しますので | 2016/02/18 |
| p.72 | リスト3-5 ファイル名 | 9刷 |
| Controllers/MemberController.cs | Controllers/MembersController.cs | 2018/05/02 |
| p.78 | リスト3-8 Views/Members/Create.cs.html 上から6行目 | 3刷 |
| control-labelcol-md-2 | control-label col-md-2 (labelとcolの間に半角スペースを入れてください) |
2014/11/05 |
| p.107 | 4-2-5項 見出し と 見出し下の本文2行目 | - |
| EnumDropDownListメソッド | EnumDropDownListForメソッド | 2023/01/16 |
| p.108 | リスト4-8の下 本文1行目 | - |
| EnumDropDownListメソッド | EnumDropDownListForメソッド | 2023/01/16 |
| p.208 | 本文 下から10行目 | 6刷 |
| Articleエンティティを取りだし、そのURLプロパティを取り出している | Articleエンティティを取りだし、そのTitleプロパティを取り出している | 2016/02/24 |
| p.214 | リスト5-32 Controllers/LinqController.cs 下から5行目 | 6刷 |
| default: articles= articles.OrderBy(a => a.Title); |
default: articles= articles.OrderBy(a => a.Title); break; |
2015/08/20 |
| p.222 | リスト5-47 LinqController.cs 上から4行目 | 9刷 |
| where a.Url == "http://nothing.org/" | where a.Url == "http://example.com/nothing/" | 2018/07/06 |
| p.231 | 上から3行目 | 3刷 |
| コードはエラーとなります。 | コードはエラーとなります(CommentオブジェクトのArticleIdがnull許容型の場合)。 | 2014/11/01 |
FAQ
申し訳ございませんが、VBへの移植については、本書サポート外となります。
以下のようなサイトや他書籍を参照ください。
http://www.lancork.net/2014/12/asp-net-mvc-5-practice-programming-csharp-to-vbnet/
/> (Lancorkさま、情報ありがとうございます)
以下のようなサイトや他書籍を参照ください。
http://www.lancork.net/2014/12/asp-net-mvc-5-practice-programming-csharp-to-vbnet/
/> (Lancorkさま、情報ありがとうございます)
更新日: 2015.01.14
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。