public ActionResult Index()
 {
     CrudModel model = new CrudModel();
     return View(model);
 }
        /// <summary>
        /// Shippers テーブルのレコード数をカウントする
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="form">入力フォームの情報</param>
        /// <returns>再描画(ViewResult)</returns>
        public ActionResult GetCount(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, FormCollection form)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button1", "SelectCount",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";
            CrudModel model = new CrudModel();

            // 値の復元のため、CopyInputValuesを呼び出す。
            model.CopyInputValues(form);

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;
            }
            else
            {
                // 結果(正常系)
                message = testReturnValue.Obj.ToString() + "件のデータがあります";
            }

            // メッセージを設定。
            model.Message = message;

            // Html.BeginFormでは、全体更新。
            return View("Index", model);
        }
        /// <summary>
        /// ShipperId をキーにして Shippers テーブルのレコードを取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="textBox1">ShipperId</param>
        /// <param name="form">入力フォームの情報</param>
        /// <returns>再描画(ViewResult)</returns>
        public ActionResult Select(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, string textBox1, FormCollection form)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button6", "Select",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 動的SQLの要素を設定
            testParameterValue.ShipperID = int.Parse(textBox1);

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";
            CrudModel model = new CrudModel();

            // 値の復元のため、CopyInputValuesを呼び出す。
            model.CopyInputValues(form);

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                // メッセージを設定。
                model.Message = message;
            }
            else
            {
                // 結果(正常系)
                // 入力フォームの復元値を更新する場合は、model.InputValuesを更新する。
                model.InputValues["textBox1"] = testReturnValue.ShipperID.ToString();
                model.InputValues["textBox2"] = testReturnValue.CompanyName;
                model.InputValues["textBox3"] = testReturnValue.Phone;
            }

            // Html.BeginFormでは、全体更新。
            return View("Index", model);
        }
        /// <summary>
        /// Shippers テーブルのレコード全件を、動的 SQL を使用して取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="ddlOrderColumn">並び替え対象列</param>
        /// <param name="ddlOrderSequence">昇順・降順</param>
        /// <param name="form">入力フォームの情報</param>
        /// <returns>再描画(ViewResult)</returns>
        public ActionResult SelectAll_DSQL(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, string ddlOrderColumn, string ddlOrderSequence, FormCollection form)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button5", "SelectAll_DSQL",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 動的SQLの要素を設定
            testParameterValue.OrderColumn = ddlOrderColumn;
            testParameterValue.OrderSequence = ddlOrderSequence;

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";
            CrudModel model = new CrudModel();

            // 値の復元のため、CopyInputValuesを呼び出す。
            model.CopyInputValues(form);

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                // メッセージを設定。
                model.Message = message;
            }
            else
            {
                // 結果(正常系)
                model.shippers = new DataSets.DsNorthwind.ShippersDataTable();
                DataTable dt = (DataTable)testReturnValue.Obj;

                foreach (DataRow row in dt.Rows)
                {
                    DataSets.DsNorthwind.ShippersRow srow = model.shippers.NewShippersRow();
                    srow.ShipperID = int.Parse(row[0].ToString());
                    srow.CompanyName = row[1].ToString();
                    srow.Phone = row[2].ToString();

                    model.shippers.Rows.Add(srow);
                }
            }

            // Html.BeginFormでは、全体更新。
            return View("Index", model);
        }
        /// <summary>
        /// Shippers テーブルに新規レコードを削除する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="textBox1">ShipperId</param>
        /// <returns>Shippers テーブルのレコードを表示するPartialViewResult</returns>
        public ActionResult Delete(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, string textBox1)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button9", "Delete",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 動的SQLの要素を設定
            testParameterValue.ShipperID = int.Parse(textBox1);

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;
            }
            else
            {
                // 結果(正常系)
                message = testReturnValue.Obj.ToString() + "件削除";
            }

            CrudModel model = new CrudModel() { Message = message };

            // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。
            return PartialView("_MessageView", model);
        }
        /// <summary>
        /// ShipperId をキーにして Shippers テーブルのレコードを取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="textBox1">ShipperId</param>
        /// <returns>Shippers テーブルのレコードを表示するJavaScriptResult</returns>
        public ActionResult Select(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, string textBox1)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button6", "Select",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 動的SQLの要素を設定
            testParameterValue.ShipperID = int.Parse(textBox1);

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                CrudModel model = new CrudModel() { Message = message };

                // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。
                return PartialView("_MessageView", model);
            }
            else
            {
                // 結果(正常系)

                // Ajax.BeginFormでは、UpdateTargetIdで指定した
                // ターゲット以外を更新する場合、JavaScriptでの対応が必要。
                // #ここではjQueryを使用している。
                string scriptText = 
                    string.Format("$('#textBox1').val('{0}');$('#textBox2').val('{1}');$('#textBox3').val('{2}');", 
                        testReturnValue.ShipperID, 
                        testReturnValue.CompanyName, 
                        testReturnValue.Phone);
                return JavaScript(scriptText);
            }
        }
        /// <summary>
        /// Shippers テーブルのレコード全件を、動的 SQL を使用して取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="ddlOrderColumn">並び替え対象列</param>
        /// <param name="ddlOrderSequence">昇順・降順</param>
        /// <returns>Shippers テーブルのレコードを表示するPartialViewResult</returns>
        public ActionResult SelectAll_DSQL(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, string ddlOrderColumn, string ddlOrderSequence)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    "CrudMu", "button5", "SelectAll_DSQL",
                    ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                    new MyUserInfo("aaa", "192.168.1.1"));

            // 動的SQLの要素を設定
            testParameterValue.OrderColumn = ddlOrderColumn;
            testParameterValue.OrderSequence = ddlOrderSequence;

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();
            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                // Ajax.BeginFormでは、UpdateTargetIdで指定した
                // ターゲット以外を更新する場合、JavaScriptでの対応が必要。
                // #ここではjQueryを使用している。
                string scriptText = "$('#lblMessage').text('" + message + "');";
                return JavaScript(scriptText);
            }
            else
            {
                // 結果(正常系)
                CrudModel model = new CrudModel();
                model.shippers = new DataSets.DsNorthwind.ShippersDataTable();
                DataTable dt = (DataTable)testReturnValue.Obj;

                foreach (DataRow row in dt.Rows)
                {
                    DataSets.DsNorthwind.ShippersRow srow = model.shippers.NewShippersRow();
                    srow.ShipperID = int.Parse(row[0].ToString());
                    srow.CompanyName = row[1].ToString();
                    srow.Phone = row[2].ToString();

                    model.shippers.Rows.Add(srow);
                }

                // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。
                return PartialView("_ChartView", model);
            }
        }