SlideShare a Scribd company logo
~新機能の紹介~


瀬尾佳隆 (y.seo@seosoft.jp)
 Microsoft MVP for Visual C#
              技術ひろば.net




                               1
   瀬尾 佳隆 (せお よしたか)
    ◦ MVP for Visual C# (Jan 2009 – Dec 2010)
    ◦ 好きなもの:Windowsアプリ、Office、SharePoint
         あれっ、Webは?・・・やります、やります!
    ◦ 個人事業主です (屋号は瀬尾ソフト)
    ◦ 根っからの技術屋・開発屋
    ◦ どうでもいい情報としては、ミュージカルが大好きです


   技術ひろば.net
    ◦   http://hiroba-tech.net/
    ◦   毎月第3土曜日(原則)にオフライン勉強会を開催
    ◦   モットーは「技術を楽しむ、技術でつながる」
    ◦   人と技術に敬意を払える方ならばどなたでも大歓迎!


                                                2
   ASP.NET MVC 2の機能強化/機能追加の概要を
    お持ち帰りいただくこと
    ◦ ご自身で評価、自習する際の手引きになれば幸いです
   ASP.NET MVCにあまり慣れていない方に基本的な
    操作を感じていただくこと

   Webアプリケーションのフレームワークとしての
    ASP.NET MVCの面白さを再認識/認識して
    いただくこと



                                  3
   3月11日に RTMがリリース されました!
    ◦ Visual Studio 2010な方はあと半月ほど待ちましょう
      2010にインストールしようとすると怒られます
    ◦ 今日は Visual Studio 2010 RC (+ MVC 2 RC2) を
      使います




                                                  4
   MVCの超入門
   HTMLヘルパー
    ◦   DisplayFor
    ◦   TextBoxFor など
    ◦   LabelFor
    ◦   EditorFor
   Area




                        5
念のため見ておきましょう




               6
   Web開発では一般的な考え方
   Model – View – Controller
    が役割を分担

     Model       • 操作・表示対象のデータ



      View       • ユーザーと対話する部分


                 • リクエストを処理し、Model と
    Controller     View をつなげる部分

                                       ※MSDN マガジン 2008年3月号より


                                                               7
   ASP.NETをベースとしたMVCパターンの
    フレームワーク
    ◦ サーバーコントロールは使いません(使えません)
    ◦ 見た目の部分はHTML や埋め込みのスクリプトで記述
      レスポンスがシンプル&開発者の意図したとおりにしやすい
       ただし ASP.NETも 4 になって、かなりスッキリしました
      よく言われるキーワードとしては、デザイナとの協業
    ◦ 単体テストがやりやすい
   ASP.NETを置き換える技術ではありません
      ASP.NETの生産性
      SilverlightのUX
      適材適所、使い分けが大事


                                          8
•DB連携ならばADO.NET Entity Data Model または LINQ to SQL Classを使う
 Model


          •Controllersフォルダーで右クリック→[Add]→[Controller]
          •クラスの接尾辞は必ず “Controller”
Controller •DB連携するには [Add action methods for ~ ] のチェックを忘れずに


          •Controllerクラスのメソッド名で右クリック→[Add View]
          •DB連携するには [Create Strongly-typed view] のチェックを忘れずに
  View    •[View data class] と [View content] の選択




                                                                       9
Viewの記述を “手助け” してくれる
ヘルパーメソッド




                       10
MVC 2でのメソッド名         機能                    MVC 1.0で対応するもの

                     プロパティー値を表示            Html.Encode (※1)
Html.DisplayFor
                     モデルに適した形で表示           (Partial View)

Html.TextBoxFor など   HTML要素を生成             Html.TextBox など

Html.LabelFor        プロパティー名を表示            Html.Label

                     モデルに適した形で
Html.EditorFor                             (Partial View)
                     HTML要素を生成

                          ※1 : Html.EncodeはHTMLエスケープのためのメソッドであり、
                               プロパティー値の表示そのものが機能というわけではない




                                                                   11
Details.aspxの場合(抜粋)
<p>                                     <div class="display-label">
  ProductID:                              ProductID</div>
                                        <div class=“display-field”>
  <%= Html.Encode(Model.ProductID) %>     <%= Html.DisplayFor(
</p>                                      model => model.ProductID) %>
                                        </div>
<p>
  ProductName:                          <div class="display-label">
  <%=                                     ProductName</div>
   Html.Encode(Model.ProductName) %>    <div class=“display-field”>
                                          <%=
</p>                                      Html.Encode(Model.ProductName) %>
                                        </div>




Html.Encode : MVC 1.0                   Html.DisplayFor : MVC 2

                                                                              12
   Html.Encodeの単純な置き換えという意味では、
    DisplayForに変更する必要はありません
    ◦ DisplayForの本質はモデルに適した表示ができることです
      あとで改めて
    ◦ プロパティー単位で表示のスタイル、書式を指定したい
      場合にも使います
        DateTime型に対して日付だけを表示したい
        金額に対して通貨記号を付加して表示したい
        名前は少し大きめのフォントにしたい
        など・・・




                                        13
<p>                            <div class="editor-label">
 <label for="ProductName">      <%= Html.LabelFor(
                                model => model.ProductName) %>
  ProductName:</label>
                               </div>
 <%= Html.TextBox(             <div class="editor-field">
 "ProductName",                 <%= Html.TextBoxFor(
 Model.ProductName) %>          model => model.ProductName) %>
 <%= Html.ValidationMessage(    <%= Html.ValidationMessageFor(
 "ProductName", "*") %>         model => model.ProductName) %>
                               </div>
</p>




Html.TextBox : MVC 1.0         Html.TextBoxFor : MVC 2

                                                                 14
   積極的に使うことをおすすめします
    ◦ IntelliSenseが使えます
    ◦ つまり、コンパイル時にタイプミスなどのエラーがわかります
    ◦ 1.0では冗長だった
      “ProductName”, Model.ProductName
      という表記を使わずにすみます




                                         15
<p>                            <div class="editor-label">
 <label for="ProductName">      <%= Html.LabelFor(
                                model => model.ProductName) %>
  ProductName:</label>
                               </div>
 <%= Html.TextBox(             <div class="editor-field">
 "ProductName",                 <%= Html.TextBoxFor(
 Model.ProductName) %>          model => model.ProductName) %>
 <%= Html.ValidationMessage(    <%= Html.ValidationMessageFor(
 "ProductName", "*") %>         model => model.ProductName) %>
                               </div>
</p>




Html.TextBox : MVC 1.0         Html.TextBoxFor : MVC 2

                                                                 16
   Html.LabelFor
    ◦ Model側でエンティティーのキャプションを一元管理できます
      日本人ならば “ProductName” ではなく “製品名” と表示したい
       ところ
      ModelMetadataを宣言することで可能になります(後述)
    ◦ IntelliSenseも使えます




                                                17
   モデルに適した出力をします
    ◦ デフォルトではモデルに含まれるプロパティ名と値を
      列挙するだけ
    ◦ テンプレートを用意することで出力結果を制御できます


   もう少し具体的に見てみましょう




                                  18
もう少し具体的なソースコードで
使い方を見てみましょう




                  19
   特定のView (複数でもよい)で特定のプロパティーの
    スタイルや書式を変更したい場合
    ◦ Viewのサブフォルダーに “DisplayTemplates” フォルダーを
      作成して、その中に Partial View (ascx) を作成する
    ◦ 書式についてはModelのDisplayFormat属性でも可能




                                                20
   Partial Viewと出力Viewを以下のように




                                 21
   出力結果




           22
   アプリケーション全体のViewに共通して
    スタイルや書式を変更したい場合
    ◦ “DisplayTemplates” フォルダーにPartial Viewを作成する
    ◦ ModelのPartialクラスを作り、さらにMetadataを定義する
      この方法ではDisplayForの引数にTemplate名を指定しなくてもいい




                                                   23
24
25
26
   プロパティーのキャプションを日本語にするなど、
    文字通り “ラベル” の操作を行います
    ◦ ModelのMetadataクラスで、キャプションを操作したい
      プロパティーを DisplayName 属性付きで定義




                                        27
28
   Formを部品化することができます
    ◦ Viewのサブフォルダーに “EditorTemplates” を作成して
      部品化したいエンティティーの Partial View を作成
      Add View ダイアログで作成したひな形を編集するとラク




                                              29
30
31
独立したサブセクションを実現する
機能




                   32
   独立したサブセクションを
    簡単に実現する機能
    ◦ フラットな構造だと、
      Controllersフォルダ、
      Viewsフォルダがどんどん
      乱雑になります
   下位コンテンツごとに
    別々のMVC を持てます




                         33
34
   プロジェクト(またはAreasフォルダ)で右クリック
    →[Add]→[Area]
   Area名を入力
   あとはそれぞれのAreaで普通のMVC開発手順で開発




                                 35
   大規模アプリケーションになるとAreaを使っても
    プロジェクトが乱雑になる可能性があります
   その場合は複数プロジェクトに分けるほうが
    より生産性・保守性が上がることがあります
    ◦ Areaに相当するプロジェクトを作成
    ◦ メインプロジェクトでそれらのプロジェクトを参照・管理

   詳しい手順はMSDN Libraryの “Creating an ASP.NET
    MVC Areas Application Using
    Multiple Projects” を参照してください
    ◦ http://msdn.microsoft.com/en-
      us/library/ee307987(VS.100).aspx



                                               36
そろそろ終わりです




            37
   ASP.NET MVC 2には今日紹介できなかった
    機能が他にもあります
    ◦ DefaultValue属性
      “/Controller/Action/id?page=1” のようなURLが可能
    ◦ 検証機能
      サーバーサイドで DataAnnotation を使用する方法
      クライアントサイドでスクリプトを使用する方法
    ◦ 非同期Controller
      モデルの操作に時間がかかる場合に便利




                                                   38
   HTMLヘルパーが強化されました
    ◦ 非常に強い型付けのおかげで、Intellisenseや
      コンパイル時エラーが利用できます
    ◦ モデルに適した出力ができます
    ◦ 特定のViewのみのスタイル、アプリケーション共通の
      スタイルを任意に組み合わせて利用できます
   AreaによりコンテンツごとにMVCを持つことが
    できます
    ◦ ただし大規模アプリケーションではサブプロジェクトの利用も
      検討してください



                                     39
   ASP.NET MVC 公式サイト
    ◦ http://www.asp.net/mvc/
    ◦ 何はなくともここだけは

   What’s New in ASP.NET MVC 2
    ◦ http://www.asp.net/learn/whitepapers/what-is-new-in-
      aspnet-mvc/
    ◦ 文字通り ASP.NET MVC 2の新機能の概要紹介
    ◦ 今日は紹介できなかった機能についても記載されています

   Scott Gu’s Blog
    ◦ http://weblogs.asp.net/scottgu/
    ◦ マイクロソフト Scott Guthrie 氏のブログ



                                                             40
   「ASP.NET MVC 実践プログラミング」 (山田祥寛 著、秀和シ
    ステム 刊、3200円)

   「ASP.NET MVC入門」 (@IT)
    ◦ http://www.atmarkit.co.jp/fdotnet/aspnetmvc/index/index
      .html
    ◦ これを読めば、今日の話はすべて忘れても大丈夫です
   「Web フォームを使用しないで Web アプリケーションを作成す
    る」 (MSDN マガジン 2008年3月号)
    ◦ http://msdn.microsoft.com/ja-
      jp/magazine/cc337884.aspx
   「Professional ASP.NET MVC 1.0」 (Wrox)
    ◦ http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-
      nerdinner_v1.pdf
    ◦ 書籍のオンライン版がタダで読めます


                                                                41
   ASP.NET MVC 基礎のキソ
    ◦ http://tinyurl.com/aspnetmvc-kiso-200912
   ASP.NET MVC ~ Part 2
    ◦ http://tinyurl.com/aspnetmvc-part2-201002


   すみません、半分宣伝です
    ◦ 勉強会で過去に私が担当したセッションの資料です
    ◦ ASP.NET MVCの基礎から学んでみたい方はどうぞ




                                                  42
43

More Related Content

PDF
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
PDF
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
PPTX
Visual studio 2013 Overview
PDF
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
PDF
jQuery と MVC で実践する標準志向 Web 開発
PDF
AngularJSについて
PDF
Windows ストアアプリのつくりかた (JS + HTML + CSS)
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Visual studio 2013 Overview
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
jQuery と MVC で実践する標準志向 Web 開発
AngularJSについて
Windows ストアアプリのつくりかた (JS + HTML + CSS)

What's hot (20)

PDF
ng-mtg#6 AngularJS ディレクティブ・パターン
PPTX
Windows ストア アプリの上手な作り方
PDF
Prism + ReactiveProperty入門
PPTX
Xamarin.formsでのmvvm利用のコツ
PPTX
MVVM入門
PDF
VIPER アーキテクチャによる iOS アプリの設計
KEY
MVCもやもや話
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
PPTX
20140322
PDF
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
PDF
Visualforce + jQuery
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
PDF
20120118 titanium
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
PDF
はじめてのVue.js
PDF
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
PPTX
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
PDF
Apexデザインパターン
PDF
【Xpages day2016】標準コントールを使わないxpage開発
KEY
やはりお前らのMVCは間違っている
ng-mtg#6 AngularJS ディレクティブ・パターン
Windows ストア アプリの上手な作り方
Prism + ReactiveProperty入門
Xamarin.formsでのmvvm利用のコツ
MVVM入門
VIPER アーキテクチャによる iOS アプリの設計
MVCもやもや話
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
20140322
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Visualforce + jQuery
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
20120118 titanium
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
はじめてのVue.js
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Apexデザインパターン
【Xpages day2016】標準コントールを使わないxpage開発
やはりお前らのMVCは間違っている
Ad

Similar to ASP.NET MVC 2 ~新機能の紹介~ (20)

PDF
Asp Net Mvc 基礎のキソ
PDF
Pro aspnetmvc3framework chap15
PDF
ASP.NET MVC Part 2
PPT
やってみよう!ASP.NET MVC #2
PDF
はじめての ASP.NET MVC
PDF
Mvc conf session_2_shibamura
PDF
Mvc conf session_1_osada
PPT
T35 ASP.NET MVCを使ったTDD入門
PDF
最新 ASP.NET Web 開発オーバービュー
PPT
ASP.NET MVC 1.0
PPT
20090212
PDF
Introduction for Browser Side MVC
PDF
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
PDF
Mvc conf session_4_ono
PPTX
20110607
PDF
Mvc conf session_5_isami
PDF
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
PDF
マイクロソフトWeb開発の今と今後
PDF
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
PDF
20150221 めとべや東京-プライベートコード共有サービス
Asp Net Mvc 基礎のキソ
Pro aspnetmvc3framework chap15
ASP.NET MVC Part 2
やってみよう!ASP.NET MVC #2
はじめての ASP.NET MVC
Mvc conf session_2_shibamura
Mvc conf session_1_osada
T35 ASP.NET MVCを使ったTDD入門
最新 ASP.NET Web 開発オーバービュー
ASP.NET MVC 1.0
20090212
Introduction for Browser Side MVC
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
Mvc conf session_4_ono
20110607
Mvc conf session_5_isami
Hokuriku.NET ASP.NET MVC 入門 2 回目 1.編集機能を実装
マイクロソフトWeb開発の今と今後
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
20150221 めとべや東京-プライベートコード共有サービス
Ad

More from Yoshitaka Seo (20)

PDF
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
PDF
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
PDF
AI-900 ポイント解説
PDF
AI プログラミング - OCA / 京都TECH オープンキャンパス 2021
PDF
AIの見方、AIとの付き合い方
PDF
Custom Visionで仏像を画像分類
PDF
誰もが AI を使う時代、作る時代
PDF
Azure IoT Edge で Custom Vision
PDF
API ペタペタしただけのお手軽 感情分析アプリ
PDF
Machine Learning studio で構造化データから予測分析 (LT版)
PDF
BIerのためのAI入門
PDF
構造化データをツールで簡単に分析
PDF
チャットボットの自然言語処理
PDF
Custom Visionを活用するためのTips
PDF
Machine Learning Serviceを使ってみよう
PDF
Bot Framework Emulator はこんなにすごい
PDF
VS Code Tools for AI の紹介
PDF
Bot Builder V4 SDK + QnA Maker / LUIS
PDF
QnA Maker 逆入門
PDF
PowerApps アプリ開発入門
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
AI-900 ポイント解説
AI プログラミング - OCA / 京都TECH オープンキャンパス 2021
AIの見方、AIとの付き合い方
Custom Visionで仏像を画像分類
誰もが AI を使う時代、作る時代
Azure IoT Edge で Custom Vision
API ペタペタしただけのお手軽 感情分析アプリ
Machine Learning studio で構造化データから予測分析 (LT版)
BIerのためのAI入門
構造化データをツールで簡単に分析
チャットボットの自然言語処理
Custom Visionを活用するためのTips
Machine Learning Serviceを使ってみよう
Bot Framework Emulator はこんなにすごい
VS Code Tools for AI の紹介
Bot Builder V4 SDK + QnA Maker / LUIS
QnA Maker 逆入門
PowerApps アプリ開発入門

ASP.NET MVC 2 ~新機能の紹介~

  • 2. 瀬尾 佳隆 (せお よしたか) ◦ MVP for Visual C# (Jan 2009 – Dec 2010) ◦ 好きなもの:Windowsアプリ、Office、SharePoint  あれっ、Webは?・・・やります、やります! ◦ 個人事業主です (屋号は瀬尾ソフト) ◦ 根っからの技術屋・開発屋 ◦ どうでもいい情報としては、ミュージカルが大好きです  技術ひろば.net ◦ http://hiroba-tech.net/ ◦ 毎月第3土曜日(原則)にオフライン勉強会を開催 ◦ モットーは「技術を楽しむ、技術でつながる」 ◦ 人と技術に敬意を払える方ならばどなたでも大歓迎! 2
  • 3. ASP.NET MVC 2の機能強化/機能追加の概要を お持ち帰りいただくこと ◦ ご自身で評価、自習する際の手引きになれば幸いです  ASP.NET MVCにあまり慣れていない方に基本的な 操作を感じていただくこと  Webアプリケーションのフレームワークとしての ASP.NET MVCの面白さを再認識/認識して いただくこと 3
  • 4. 3月11日に RTMがリリース されました! ◦ Visual Studio 2010な方はあと半月ほど待ちましょう  2010にインストールしようとすると怒られます ◦ 今日は Visual Studio 2010 RC (+ MVC 2 RC2) を 使います 4
  • 5. MVCの超入門  HTMLヘルパー ◦ DisplayFor ◦ TextBoxFor など ◦ LabelFor ◦ EditorFor  Area 5
  • 7. Web開発では一般的な考え方  Model – View – Controller が役割を分担 Model • 操作・表示対象のデータ View • ユーザーと対話する部分 • リクエストを処理し、Model と Controller View をつなげる部分 ※MSDN マガジン 2008年3月号より 7
  • 8. ASP.NETをベースとしたMVCパターンの フレームワーク ◦ サーバーコントロールは使いません(使えません) ◦ 見た目の部分はHTML や埋め込みのスクリプトで記述  レスポンスがシンプル&開発者の意図したとおりにしやすい  ただし ASP.NETも 4 になって、かなりスッキリしました  よく言われるキーワードとしては、デザイナとの協業 ◦ 単体テストがやりやすい  ASP.NETを置き換える技術ではありません  ASP.NETの生産性  SilverlightのUX  適材適所、使い分けが大事 8
  • 9. •DB連携ならばADO.NET Entity Data Model または LINQ to SQL Classを使う Model •Controllersフォルダーで右クリック→[Add]→[Controller] •クラスの接尾辞は必ず “Controller” Controller •DB連携するには [Add action methods for ~ ] のチェックを忘れずに •Controllerクラスのメソッド名で右クリック→[Add View] •DB連携するには [Create Strongly-typed view] のチェックを忘れずに View •[View data class] と [View content] の選択 9
  • 11. MVC 2でのメソッド名 機能 MVC 1.0で対応するもの プロパティー値を表示 Html.Encode (※1) Html.DisplayFor モデルに適した形で表示 (Partial View) Html.TextBoxFor など HTML要素を生成 Html.TextBox など Html.LabelFor プロパティー名を表示 Html.Label モデルに適した形で Html.EditorFor (Partial View) HTML要素を生成 ※1 : Html.EncodeはHTMLエスケープのためのメソッドであり、 プロパティー値の表示そのものが機能というわけではない 11
  • 12. Details.aspxの場合(抜粋) <p> <div class="display-label"> ProductID: ProductID</div> <div class=“display-field”> <%= Html.Encode(Model.ProductID) %> <%= Html.DisplayFor( </p> model => model.ProductID) %> </div> <p> ProductName: <div class="display-label"> <%= ProductName</div> Html.Encode(Model.ProductName) %> <div class=“display-field”> <%= </p> Html.Encode(Model.ProductName) %> </div> Html.Encode : MVC 1.0 Html.DisplayFor : MVC 2 12
  • 13. Html.Encodeの単純な置き換えという意味では、 DisplayForに変更する必要はありません ◦ DisplayForの本質はモデルに適した表示ができることです  あとで改めて ◦ プロパティー単位で表示のスタイル、書式を指定したい 場合にも使います  DateTime型に対して日付だけを表示したい  金額に対して通貨記号を付加して表示したい  名前は少し大きめのフォントにしたい  など・・・ 13
  • 14. <p> <div class="editor-label"> <label for="ProductName"> <%= Html.LabelFor( model => model.ProductName) %> ProductName:</label> </div> <%= Html.TextBox( <div class="editor-field"> "ProductName", <%= Html.TextBoxFor( Model.ProductName) %> model => model.ProductName) %> <%= Html.ValidationMessage( <%= Html.ValidationMessageFor( "ProductName", "*") %> model => model.ProductName) %> </div> </p> Html.TextBox : MVC 1.0 Html.TextBoxFor : MVC 2 14
  • 15. 積極的に使うことをおすすめします ◦ IntelliSenseが使えます ◦ つまり、コンパイル時にタイプミスなどのエラーがわかります ◦ 1.0では冗長だった “ProductName”, Model.ProductName という表記を使わずにすみます 15
  • 16. <p> <div class="editor-label"> <label for="ProductName"> <%= Html.LabelFor( model => model.ProductName) %> ProductName:</label> </div> <%= Html.TextBox( <div class="editor-field"> "ProductName", <%= Html.TextBoxFor( Model.ProductName) %> model => model.ProductName) %> <%= Html.ValidationMessage( <%= Html.ValidationMessageFor( "ProductName", "*") %> model => model.ProductName) %> </div> </p> Html.TextBox : MVC 1.0 Html.TextBoxFor : MVC 2 16
  • 17. Html.LabelFor ◦ Model側でエンティティーのキャプションを一元管理できます  日本人ならば “ProductName” ではなく “製品名” と表示したい ところ  ModelMetadataを宣言することで可能になります(後述) ◦ IntelliSenseも使えます 17
  • 18. モデルに適した出力をします ◦ デフォルトではモデルに含まれるプロパティ名と値を 列挙するだけ ◦ テンプレートを用意することで出力結果を制御できます  もう少し具体的に見てみましょう 18
  • 20. 特定のView (複数でもよい)で特定のプロパティーの スタイルや書式を変更したい場合 ◦ Viewのサブフォルダーに “DisplayTemplates” フォルダーを 作成して、その中に Partial View (ascx) を作成する ◦ 書式についてはModelのDisplayFormat属性でも可能 20
  • 21. Partial Viewと出力Viewを以下のように 21
  • 22. 出力結果 22
  • 23. アプリケーション全体のViewに共通して スタイルや書式を変更したい場合 ◦ “DisplayTemplates” フォルダーにPartial Viewを作成する ◦ ModelのPartialクラスを作り、さらにMetadataを定義する  この方法ではDisplayForの引数にTemplate名を指定しなくてもいい 23
  • 24. 24
  • 25. 25
  • 26. 26
  • 27. プロパティーのキャプションを日本語にするなど、 文字通り “ラベル” の操作を行います ◦ ModelのMetadataクラスで、キャプションを操作したい プロパティーを DisplayName 属性付きで定義 27
  • 28. 28
  • 29. Formを部品化することができます ◦ Viewのサブフォルダーに “EditorTemplates” を作成して 部品化したいエンティティーの Partial View を作成  Add View ダイアログで作成したひな形を編集するとラク 29
  • 30. 30
  • 31. 31
  • 33. 独立したサブセクションを 簡単に実現する機能 ◦ フラットな構造だと、 Controllersフォルダ、 Viewsフォルダがどんどん 乱雑になります  下位コンテンツごとに 別々のMVC を持てます 33
  • 34. 34
  • 35. プロジェクト(またはAreasフォルダ)で右クリック →[Add]→[Area]  Area名を入力  あとはそれぞれのAreaで普通のMVC開発手順で開発 35
  • 36. 大規模アプリケーションになるとAreaを使っても プロジェクトが乱雑になる可能性があります  その場合は複数プロジェクトに分けるほうが より生産性・保守性が上がることがあります ◦ Areaに相当するプロジェクトを作成 ◦ メインプロジェクトでそれらのプロジェクトを参照・管理  詳しい手順はMSDN Libraryの “Creating an ASP.NET MVC Areas Application Using Multiple Projects” を参照してください ◦ http://msdn.microsoft.com/en- us/library/ee307987(VS.100).aspx 36
  • 38. ASP.NET MVC 2には今日紹介できなかった 機能が他にもあります ◦ DefaultValue属性  “/Controller/Action/id?page=1” のようなURLが可能 ◦ 検証機能  サーバーサイドで DataAnnotation を使用する方法  クライアントサイドでスクリプトを使用する方法 ◦ 非同期Controller  モデルの操作に時間がかかる場合に便利 38
  • 39. HTMLヘルパーが強化されました ◦ 非常に強い型付けのおかげで、Intellisenseや コンパイル時エラーが利用できます ◦ モデルに適した出力ができます ◦ 特定のViewのみのスタイル、アプリケーション共通の スタイルを任意に組み合わせて利用できます  AreaによりコンテンツごとにMVCを持つことが できます ◦ ただし大規模アプリケーションではサブプロジェクトの利用も 検討してください 39
  • 40. ASP.NET MVC 公式サイト ◦ http://www.asp.net/mvc/ ◦ 何はなくともここだけは  What’s New in ASP.NET MVC 2 ◦ http://www.asp.net/learn/whitepapers/what-is-new-in- aspnet-mvc/ ◦ 文字通り ASP.NET MVC 2の新機能の概要紹介 ◦ 今日は紹介できなかった機能についても記載されています  Scott Gu’s Blog ◦ http://weblogs.asp.net/scottgu/ ◦ マイクロソフト Scott Guthrie 氏のブログ 40
  • 41. 「ASP.NET MVC 実践プログラミング」 (山田祥寛 著、秀和シ ステム 刊、3200円)  「ASP.NET MVC入門」 (@IT) ◦ http://www.atmarkit.co.jp/fdotnet/aspnetmvc/index/index .html ◦ これを読めば、今日の話はすべて忘れても大丈夫です  「Web フォームを使用しないで Web アプリケーションを作成す る」 (MSDN マガジン 2008年3月号) ◦ http://msdn.microsoft.com/ja- jp/magazine/cc337884.aspx  「Professional ASP.NET MVC 1.0」 (Wrox) ◦ http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc- nerdinner_v1.pdf ◦ 書籍のオンライン版がタダで読めます 41
  • 42. ASP.NET MVC 基礎のキソ ◦ http://tinyurl.com/aspnetmvc-kiso-200912  ASP.NET MVC ~ Part 2 ◦ http://tinyurl.com/aspnetmvc-part2-201002  すみません、半分宣伝です ◦ 勉強会で過去に私が担当したセッションの資料です ◦ ASP.NET MVCの基礎から学んでみたい方はどうぞ 42
  • 43. 43