ASP.NET MVC5 雑記
Web案件を受けたが、自分はWeb未経験。
なので、サーバーサイドがC#のASP.NETを触ってみることにした。
プロジェクトについて
App_Startフォルダ
- AuthConfig
- OAuth?の認証連携のサポートをするらしい
- BundleConfig
- JS,CSSの参照処理
- FilterConfig
- 全アクションに対して共通処理を行える
- trycatchによる例外処理やログ出力に使う
- バグ調査に使えそう
- RouteConfig
- 要求URIとControllerのアクションとの紐づけを行う
- WebApiConfig
- RouteConfigのWebAPI版
MVCにおけるエントリポイント
Global.asax.cs
MVC
- Controllerが要求を受ける
- 他のControllerに渡す場合もある
- Modelに対して更新を要求する場合もある
- Modelを要求する
- Modelが存在しない場合もある
- ModelをViewに渡す
- Viewを結果として送信、画面に表示する
View
- データの表示
- データの取得・更新などは関知しない(View以外の債務)
ViewBag
ViewとControllerにおけるグローバル変数的な立ち位置
dynamic型
@RenderBody
部分ビューを差し込むキーワード
WebFormにおけるマスターページ
HTMLヘルパー
ActionLinkはよく使いそう
拡張メソッドも定義できて使うなら
https://office-yone.com/technic/asp-net-mvc-htmlhelper/
モバイルサイト対応
Viewの拡張子の前に「.mobile」をつければ良いだけ
【例】Index.mobile.cshtml
Model
- 扱うデータやロジックをつかさどる部分
- データを取得し、加工し、然るべき処理に渡す
- データの表示には関知しない
- 更に機能を付加するならpartial classを用いる
- DataAnnotation
Controller
- ViewとModelの橋渡し部分
- Modelから受けたデータをViewに渡す
- ユーザー入力に合わせて処理を行う
- 橋渡しをする上でアクションと呼ばれるメソッドを使う
- ActionResult型を返すことで実現させる
- アクションメソッドを使いたくなければ明示的にNonAction属性を付加する
- https://msdn.microsoft.com/ja-jp/library/dd410269(v=vs.100).aspx
アクションフィルター
- 要求されたアクションに動作をアタッチする
- 既出のフィルター
- エラー時のハンドリング
- 認証要求と未認証ユーザーのブロック
- 出力のキャッシュ
- 既出のインターフェイス
- アクションの認証と承認
- コントローラーメソッドの実行前と実行後
- INFOまたはWARNログ
- 結果表示の前後に実行
- 例外発生時に実行
- ERRORログ
WebAPI
- IHttpActionResultがMVCでいうActionResultに近い
- OK, BadRequest, NotFoundなどがある
- それぞれHttpStatusCodeに対応する
- エラー時の処理が簡便になる
ルーティング
- ControllerにRoutePrefix属性をつけるとURLの指定を決められる
- 各メソッドに対してRoute属性をつけるとURLの指定を決められる
メッセージライフサイクル
Webアプリにおける作り
https://blogs.msdn.microsoft.com/chack/2013/02/17/asp-net-web-api-http/
Handlerについて
- アプリ全体ならGlobal.asax.csのGlobalConfiguration.Configuration.MessageHandlers.Addで
- Route全体ならWebApiConfigのMapRouteを使う
テスト
FiddlerはWebアクセスの試験ができる
Entity Framework
DBアクセスのためのフレームワーク
MVCとEFは親和性が高い
その他
WebFormとの差
リリース年月日
- MVC1.0は2009年3月
- MVC5.0が現在最新で2013年10月
- VS2013以降にコンポーネントが存在する
URIとURLの違い
既存の外部ライブラリ
新規モジュールを入れたいならNuGetを使えば勝手に追加されるっぽい
追加の際は依存関係に気を付けること
無暗に最新版モジュールにしない
ファイルに対して更新権限を決めておくと良いらしい
- bootstrap
- jQuery
- modernizr
ブラウザのデバッグについて
どのブラウザもF12キーを押すことで開発者ツールを開けるので
積極的に活用すべき
- html&cssの中身
- HTTPメソッドのログ
手順書が書ける
Databaseの作成からModelの作成、
スキャフォールディングによるControllerとViewの生成によって
CRUDのアプリケーションが実現できる