[[Open棟梁>https://github.com/OpenTouryoProject]] wiki *目次 [#wd1b8f61] #contents *概要 [#x8ea1779] -MVC用のP層フレームワークに機能追加をしたり、 -[[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]]を蓄積したりしているので、 これに伴う、チュートリアルに対する改修予定項目を書き溜めている。 *現状の設計全容 [#e5c37354] **BeginForm [#x781b17b] Html.BeginFormを使用している。 **モジュール化の方針 [#y8c15779] 「[[スキャフォールディング方式>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#td62a820]]」を採用している。 **モジュール構成 [#ub5ffe0f] ***M:Model [#g9749f03] Modelは作らず、Open棟梁の戻り値クラス(OrderReturnValue.cs)をそのまま使用している。 戻り値クラス(OrderReturnValue.cs)は、以下のpublicフィールドを持っている。 -注文ID~ int OrderID -メッセージ (画面表示用)~ string Message -Order information (summary)~ System.Data.DataTable Orders; -Order information (details)~ System.Data.DataTable OrderDetails; ***V:View [#t08d4cac] -枠~ _SampleLayout.cshtml -ビュー --メニュー~ ---path : ~/Views/Menu/Index.cshtml ---メニューを表示する。 --注文画面 ---path : ~/Views/Order/Index.cshtml ---注文の一覧を表示する。 --注文明細画面~ ---path : ~/Views/Order/Order.cshtml ---注文と注文明細一覧を表示する(夫々の修正フォーム込)。 -部分ビュー --注文情報部分ビュー ---path : ~/Views/Order/_OrderInfo.cshtml ---注文明細画面の中に注文を表示する(修正フォーム込)。 --注文明細情報部分ビュー ---path : ~/Views/Order/_OrderDetailsInfo.cshtml ---注文明細画面の中に注文明細一覧を表示する(修正フォーム込)。 ***C:Control [#u088b131] -メニュー画面用~ MenuController.cs -注文データ用~ OrderController.cs --注文画面の表示 ---初期表示~ url : /Order~ method : public ActionResult Index()~ ---詳細表示~ url : /Order?selectedRow=X~ method : 同上~ ---ページング~ url : /Order?page=X~ method : 同上~ ---ソーティング~ url : /Order?sortdir=ASC&sort=XXXXX~ method : 同上~ --注文明細画面の表示 ---初期表示:注文情報表示~ url : /Order/Order?OrderId=XXXXX~ method : public ActionResult Order(string OrderId)~ ---注文情報更新フォーム表示~ url : /Order/GetOrderDetails?OrderId=XXXXX&g1selectedRow=X~ method : public ActionResult GetOrderDetails(int? id)~ ---注文情報更新処理~ url : /Order/UpdateModel_OrderSummary~ method : [HttpPost] public ActionResult UpdateModel_OrderSummary(・・・~ ---注文明細情報表示~ url : /Order/GetOrderDetails/XXXXX~ method : public ActionResult GetOrderDetails(int? id)~ ---注文明細情報更新フォーム表示~ url : /Order/GetOrderDetails/XXXXX?selectedRow=X~ method : public ActionResult GetOrderDetails(int? id)~ ---注文明細情報更新処理~ url : /Order/UpdateModel_OrderDetails~ method : [HttpPost] public ActionResult UpdateModel_OrderDetails(・・・~ ---データベースの更新処理~ url : /Order/UpdateDatabase~ method : [HttpPost] public ActionResult UpdateDatabase()~ *改修予定項目 [#o417aa72] **モジュール化の方針 [#e9c7c2cd] 「[[スキャフォールディング方式>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#td62a820]]」から「[[ASPXライクな1画面1モジュール方式>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#se3008cd]]」へ。 **モジュール構成 [#x9ea01d3] ***M:Model [#ddcb3c5a] -現状、戻り値クラスを直接、Modelとして使用しているが、~ 戻り値クラスにobjectフィールドを定義、ModelフォルダにModelとなるBeanを定義し、~ 戻り値クラスのobjectフィールドを使用してModelとなるBeanを渡したほうがイイのでは? -また、以下の機能を活用するように実装しても良い。 --バインディング ---モデルバインディング ---双方向モデルバインディング --DataType属性などのModelMetadataの追加 ---テンプレート・ヘルパーの活用 ---Validation機能の実装 ***V:View [#f040d073] -_SampleLayout.cshtml --旧 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> @* ViewBag.Title に指定した値を画面のタイトルとする *@ <title>@ViewBag.Title</title> @* アプリケーションで共通的な JavaScript, CSS を定義 *@ @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> <link href="~/Content/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> <link href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css" /> @* ビュー側に記述可能なセクションを定義 *@ @RenderSection("scripts", required: false) </head> <body> @* アプリケーションで共通的な UI 要素の例 (ここでは、h1 タグを定義する) *@ <h1>Touryo Sample</h1> @* 各コンテンツ部分 *@ @RenderBody() </body> </html> --新 @{ Layout = null; } @* マスタ・ページに相当 *@ <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> @* ViewBag.Title に指定した値を画面のタイトルとする *@ <title>@ViewBag.Title</title> @* アプリケーションで共通的な JavaScript, CSS を定義 *@ @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/jquery-ui-1.9.2.min.js"></script> <script src="~/Framework/Js/common.js"></script> <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> <link href="~/Content/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> <link href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css" /> <link href="~/Content/themes/base/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" /> @* ビュー側に記述可能なセクションを定義 *@ @RenderSection("scripts", required: false) <script type="text/javascript"> URL = '@Url.Action("Index", "Ping")'; </script> </head> <body> @* アプリケーションで共通的な UI 要素の例 (ここでは、h1 タグを定義する) *@ <h1>Touryo Sample</h1> @* 各コンテンツ部分 *@ @RenderBody() </body> </html> ***C:Control [#q41df06d] 「[[ASPXライクな1画面1モジュール方式>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95#se3008cd]]」を採用する。 -OrderController -OrderDetailController