「[[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を使用していない。
--そのため、Model Binding + DataAnnotationを使用していない。

と言った実装になっています。
と言った、少々、古いスタイルの実装となっています。

*詳細 [#pcad8acc]
*チュートリアルの変更点 [#pcad8acc]
以下の様に、最近の一般的な実装に変更可能です。

**変更内容 [#u5c9f959]
以下の様に、最近の一般的な実装に変更可能です。~
変更内容は、それぞれのDiffを確認して下さい。
-Model Binding + DataAnnotation の MVVMスタイルに変更します。

***チュートリアル [#e1e2bb95]
-変更内容は、下記のそれぞれのディレクトリの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]
**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]
**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で受ける。

-以下のようにViewModelを定義すれば~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/ViewModels/ManageAddOAuth2DataViewModel.cs
--単項目チェックや
--ラベル表示(国際化対応)も
**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]]
-[[機能、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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS