public async Task <ActionResult> Select(CrudViweModel model) { string scriptText = ""; if (ModelState.IsValid) { // 引数クラスを生成。下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue(this.ControllerName, "-", this.ActionName, model.DdlDap + "%" + model.DdlMode1 + "%" + model.DdlMode2 + "%" + model.DdlExRollback, this.UserInfo); // 動的SQLの要素を設定 testParameterValue.Shipper = model.Shipper; // B層呼出し+都度コミット LayerB layerB = new LayerB(); TestReturnValue testReturnValue = (TestReturnValue)await layerB.DoBusinessLogicAsync( testParameterValue, this.SelectIsolationLevel(model.DdlIso)); // 結果表示するメッセージ string message = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";"; message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";"; message += "ErrorInfo:" + testReturnValue.ErrorInfo; // メッセージを設定。 model.Message = message; // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。 return(PartialView("_MessageView", model)); } else { // 結果(正常系) } // Ajax.BeginFormでは、UpdateTargetIdで指定した // ターゲット以外を更新する場合、JavaScriptでの対応が必要。 // #ここではjQueryを使用している。 ShipperViweModel svm = (ShipperViweModel)testReturnValue.Obj; scriptText = string.Format( "$('#Shipper_ShipperID').val('{0}');$('#Shipper_CompanyName').val('{1}');$('#Shipper_Phone').val('{2}');", svm.ShipperID, svm.CompanyName, svm.Phone); } return(JavaScript(scriptText)); }
/// <summary>1レコードを返すSELECTクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void Select(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL filename = "ShipperSelect.sql"; } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL filename = "ShipperSelect.xml"; } // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", testParameter.Shipper.ShipperID); // 戻り値 dt DataTable dt = new DataTable(); // -- 1レコードを返すSELECTクエリを実行する this.ExecSelectFill_DT(dt); // ↑DBアクセス----------------------------------------------------- // 一部、DataToPocoのテストコード ShipperViweModel svm = DataToPoco.DataTableToPOCO <ShipperViweModel>(dt); Debug.WriteLine("svm:" + ObjectInspector.Inspect(svm)); TestShipperViweModel tsvm = DataToPoco.DataTableToPOCO <TestShipperViweModel>(dt, // mapの書き方は、Key-Valueでdst-srcのproperty field名を書く new Dictionary <string, string>() { { "_ShipperID", "ShipperID" }, { "_CompanyName", "CompanyName" }, { "_Phone", "Phone" } }); Debug.WriteLine("tsvm:" + ObjectInspector.Inspect(tsvm)); testReturn.Obj = svm; testReturn.Obj2 = tsvm; }
public async Task <IActionResult> Select(CrudViweModel model) { if (ModelState.IsValid) { // 引数クラスを生成。下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue(this.ControllerName, "-", this.ActionName, model.DdlDap + "%" + model.DdlMode1 + "%" + model.DdlMode2 + "%" + model.DdlExRollback, this.UserInfo); // 動的SQLの要素を設定 testParameterValue.Shipper = model.Shipper; // B層呼出し+都度コミット LayerB layerB = new LayerB(); TestReturnValue testReturnValue = (TestReturnValue)await layerB.DoBusinessLogicAsync( testParameterValue, this.SelectIsolationLevel(model.DdlIso)); // 結果表示するメッセージ string message = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";"; message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";"; message += "ErrorInfo:" + testReturnValue.ErrorInfo; // メッセージを設定。 model.Message = message; } else { // 結果(正常系) ModelState.Clear(); // ErrorのClearをしないと何故か設定できない。 #region PocoToPocoのテストコード ShipperViweModel svm = null; TestShipperViweModel tsvm = null; // テスト1 svm = (ShipperViweModel)BinarySerialize.DeepClone(model.Shipper); if (testReturnValue.Obj2 != null) { PocoToPoco.Map <TestShipperViweModel, ShipperViweModel>( (TestShipperViweModel)testReturnValue.Obj2, svm, // mapの書き方は、Key-Valueでdst-srcのproperty field名を書く new Dictionary <string, string>() { { "ShipperID", "_ShipperID" }, { "CompanyName", "_CompanyName" }, { "Phone", "_Phone" } }); Debug.WriteLine("svm:" + ObjectInspector.Inspect(svm)); } // テスト2 tsvm = PocoToPoco.Map <ShipperViweModel, TestShipperViweModel>( (ShipperViweModel)testReturnValue.Obj, null, // mapの書き方は、Key-Valueでdst-srcのproperty field名を書く new Dictionary <string, string>() { { "_ShipperID", "ShipperID" }, { "_CompanyName", "CompanyName" }, { "_Phone", "Phone" } }); Debug.WriteLine("tsvm:" + ObjectInspector.Inspect(tsvm)); #endregion model.Shipper = (ShipperViweModel)testReturnValue.Obj; } } // 再表示(Html.BeginFormでは、全体更新。 return(View("Index", model)); }