SlideShare una empresa de Scribd logo
1 de 43
~新機能の紹介~


瀬尾佳隆 (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

Más contenido relacionado

La actualidad más candente

ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターンng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターンHayashi Yuichi
 
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方一希 大田
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門一希 大田
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計Yuichi Adachi
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いKen Morishita
 
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revWindows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revShotaro Suzuki
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIGHayashi Yuichi
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」U-dai Yokoyama
 
はじめてのVue.js
はじめてのVue.jsはじめてのVue.js
はじめてのVue.jsKei Yagi
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドTetsuji Hayashi
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...Fujio Kojima
 
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発西 雄樹
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 

La actualidad más candente (20)

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

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

Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamuraHiroshi Okunushi
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Hideki Hashizume
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソYoshitaka Seo
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideYusuke Tochigi
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門normalian
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2Tadahiro Higuchi
 
マイクロソフトWeb開発の今と今後
マイクロソフトWeb開発の今と今後マイクロソフトWeb開発の今と今後
マイクロソフトWeb開発の今と今後Akira Inoue
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介Fumiya Sakai
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVCjz5 MATSUE
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成Osamu Monoe
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発lalha
 

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

Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamura
 
Vue入門
Vue入門Vue入門
Vue入門
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
マイクロソフトWeb開発の今と今後
マイクロソフトWeb開発の今と今後マイクロソフトWeb開発の今と今後
マイクロソフトWeb開発の今と今後
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成
3 倍早い?! MS 製開発者専用ツールによる HTML5 + JavaScript を使ったWeb 作成
 
20100218
2010021820100218
20100218
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 

Más de Yoshitaka Seo

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

Más de Yoshitaka Seo (20)

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

Último

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Último (12)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

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