「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[リリース情報]] --[[機能一覧 - 共通部品群]] *目次 [#j12868f0] #contents *概要 [#xc7b824c] 現時点のMVCチュートリアルは、 -Tutorial_MVC_CSharp.ja · OpenTouryoProject/OpenTouryo Wiki~ https://github.com/OpenTouryoProject/OpenTouryo/wiki/Tutorial_MVC_CSharp.ja --EntityにDataSet、DataTableを使用している。 --そのため、Model Binding + DataAnnotationを使用していない。 と言った、少々、古いスタイルの実装となっています。 *チュートリアルの変更点 [#pcad8acc] 以下の様に、最近の一般的な実装に変更可能です。 -Model Binding + DataAnnotation の MVVMスタイルに変更します。 -変更内容は、下記のそれぞれのディレクトリのDiffを確認して下さい。 --MVC_Sample_20181003 --MVC_Sample_20181003_poco --MVC_Sample_20190627_mvvm **オリジナルのチュートリアル [#e1e2bb95] チュートリアルを遂行して出来上がったサンプル -https://github.com/daisukenishino2/SupportOpenTouryopPJ/tree/master/Tutorials/programs/CS/Samples/WebApp_sample/MVC_Sample_20181003 **EntityのPOCO化 [#ecc1b3c0] [[POCO変換部品>機能一覧 - 共通部品群#r9af4f09]]を使用して、DataSet、DataTableのEntityをPOCO化可能です。 -https://github.com/daisukenishino2/SupportOpenTouryopPJ/blob/master/Tutorials/programs/CS/Samples/WebApp_sample/MVC_Sample_20181003_poco/ **Model Bindingの利用 [#x8c165a1] [[EntityのPOCO化>#ecc1b3c0]]を行った後に、[[Model Binding>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E7%94%A8%E8%AA%9E#t62a5795]]を行うよう、コードを変更可能です。 -https://github.com/daisukenishino2/SupportOpenTouryopPJ/tree/master/Tutorials/programs/CS/Samples/WebApp_sample/MVC_Sample_20190627_mvvm/ ※ なお、ViewModelに[[DataAnnotation>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#yb8830b1]]することで、単項目チェックも自動化可能です。~ これについては、[[コチラ>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/ViewModels/AccountLoginViewModel.cs]]のViewModelガチ実装が参考になります。 *Model Binding + DataAnnotation [#e74d877e] **[[Model Binding>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E7%94%A8%E8%AA%9E#t62a5795]] [#wfc59249] ***単方向と双方向バインディング [#h6ebec1a] -単方向バインディングは、単に、 --クライアントから送信されてきたデータのキー名と、~ --ControllerのAction Methodの引数名とが一致するキー値を >探して、バインドすると言う機能。 -双方向バインディングを使用して、~ Viewにバインドて、ViewからControllerにPOSTすると、~ Web FormsのPostBackのような動作を容易に実装可能。 ***双方向バインディングの実装方法 [#f410f9f3] -ViewModelを定義する。 -これをControllerからViewに渡して、Html.xxxxForでバインド。 -Viewから、ControllerへのPOSTをViewModelで受ける。 **DataAnnotation [#g1ab409f] また、以下のようにViewModelを定義すれば~ https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/ViewModels/ManageAddSaml2OAuth2DataViewModel.cs -単項目チェックや -ラベル表示(国際化対応)も 属性(アノテーション)によって、容易に実装可能。 *Controller作成の単位 [#e5deb391] 基本的には、「[[モジュール化の要約>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#j2c8410a]]」にあるように、 -[[全体View ごとに Controller を作成する方式>#mc8cb5e9]] -[[機能やデータ構造に対して 1 つの Controller を対応させる方式>#kfe296c6]] -[[画面単位(全体View ごとに Controller を作成する方式>#mc8cb5e9]] -[[機能、CRUD単位(機能やデータ構造に対して 1 つの Controller を対応させる方式>#kfe296c6]] がある。[[オリジナルのチュートリアル>#e1e2bb95]]では、後者を採用している。 **画面単位 [#mc8cb5e9] -Web Formsと同じで解り易い。 -大規模ではコチラが適合する。 **機能、CRUD単位 [#kfe296c6] 以下の場合は、コチラ。 -複雑な画面を開発する。 -スキャフォールディングで画面を開発する。 *参考 [#r2c9efe8] **[[MVCチュートリアルの改修項目]] [#vc091f0b] **マイクロソフト系技術情報 Wiki [#b1b0ea1e] -ASP.NET MVC~ https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC --ASP.NET MVCの用語~ https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E7%94%A8%E8%AA%9E --ASP.NET MVCの利用方法~ https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95 IP:202.246.252.97 TIME:"2019-07-01 (月) 12:42:24" REFERER:"https://opentouryo.osscons.jp/index.php?cmd=edit&page=MVC%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%AEPOCO%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" USER_AGENT:"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"