async Task <IActionResult> SaveServiceAction(IServiceDescriptorViewModel viewModel, string serviceJson) { IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson); var service = await _esbModelContext.Services.FindAsync(originalViewModel.ServiceID); if (service == null) { throw new Exception($"视图包含的服务协定所对应的服务本身[ServiceID={originalViewModel.ServiceID}]已经在数据库中不存在"); } if (originalViewModel.UpdateToService(ref service, out var error) == false) { string serviceViewName; if (originalViewModel.ServiceType == ServiceType.SimpleRESTful) { TempData[STATE_RESTRETURN_ERROR] = error; serviceViewName = nameof(EditSimpleRestfulService); } else if (originalViewModel.ServiceType == ServiceType.NCWebService) { TempData[STATE_NCRETURN_ERROR] = error; serviceViewName = nameof(EditNCWebService); } else { throw new Exception("not implemented"); } TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel); return(RedirectToAction(serviceViewName)); } _esbModelContext.Update(service); await _esbModelContext.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
/// <summary> /// 假定uiViewModel参数是来自用户视图的数据控件绑定模型, /// 而当前实例是一个从数据库或视图状态中恢复出来的老模型, /// 那么,应当运行本方法完成用户可能发生的输入更改。 /// 注意:本方法仅更新那些绑定到了视图上的form control的值。 /// </summary> /// <param name="uiViewModel"></param> public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel) { NCDescriptorViewModel viewModel = (NCDescriptorViewModel)uiViewModel; this.ActiveStatus = viewModel.ActiveStatus; this.EndPoint = viewModel.EndPoint; this.ServiceName = viewModel.ServiceName; this.WebServiceUrl = viewModel.WebServiceUrl; }
/// <summary> /// 假定uiViewModel参数是来自用户视图的数据控件绑定模型, /// 而当前实例是一个从数据库或视图状态中恢复出来的老模型, /// 那么,应当运行本方法完成用户可能发生的输入更改。 /// 注意:本方法仅更新那些绑定到了视图上的form control的值。 /// </summary> /// <param name="uiViewModel"></param> public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel) { PrimetonDescriptorViewModel viewModel = (PrimetonDescriptorViewModel)uiViewModel; this.ActiveStatus = viewModel.ActiveStatus; this.Operation = viewModel.Operation; this.ServiceName = viewModel.ServiceName; this.ServiceAddress = viewModel.ServiceAddress; this.Prefix = viewModel.Prefix; this.Namespace = viewModel.Namespace; }
IActionResult DeleteJsonAction(JsonTemplateNames partName, IServiceDescriptorViewModel viewModel, string serviceJson) { IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson); string serviceViewName; if (originalViewModel.ServiceType == ServiceType.NCWebService) { serviceViewName = nameof(EditNCWebService); } else if (originalViewModel.ServiceType == ServiceType.SimpleRESTful) { serviceViewName = nameof(EditSimpleRestfulService); } else if (originalViewModel.ServiceType == ServiceType.PrimetonService) { serviceViewName = nameof(EditPrimetonService); } else { throw new Exception("not implemented"); } if (partName == JsonTemplateNames.NCParameter) { ((NCDescriptorViewModel)originalViewModel).ParameterBody = null; } else if (partName == JsonTemplateNames.NCReturn) { ((NCDescriptorViewModel)originalViewModel).ReturnBody = null; } else if (partName == JsonTemplateNames.PrimetonParameter) { ((PrimetonDescriptorViewModel)originalViewModel).InputBody = null; } else if (partName == JsonTemplateNames.PrimetonReturn) { ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody = null; } else if (partName == JsonTemplateNames.RESTParameter) { ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate = null; ((SimpleRestfulDescriptorViewModel)originalViewModel).SelectedTab = "nav-json"; } else if (partName == JsonTemplateNames.RESTReturnValue) { ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate = null; } TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel); return(RedirectToAction(serviceViewName)); }
/// <summary> /// 假定uiViewModel参数是来自用户视图的数据已绑定模型, /// 而当前实例是一个从数据库或视图中恢复出来的老模型, /// 那么,应当运行本方法完成用户可能发生的输入更改。 /// 注意:本方法仅更新那些绑定到了视图上的form control的值。 /// </summary> /// <param name="uiViewModel"></param> public void UpdateFromUI(IServiceDescriptorViewModel uiViewModel) { SimpleRestfulDescriptorViewModel viewModel = (SimpleRestfulDescriptorViewModel)uiViewModel; this.BaseApiUrl = viewModel.BaseApiUrl; this.FormBodyTemplate = viewModel.FormBodyTemplate; this.Method = viewModel.Method; this.QueryStringTemplate = viewModel.QueryStringTemplate; this.RouteDataTemplate = viewModel.RouteDataTemplate; this.SelectedTab = viewModel.SelectedTab; this.ReturnType = viewModel.ReturnType; this.SuccessRule = viewModel.SuccessRule; this.SuccessPath = viewModel.SuccessPath; this.SuccessRegx = viewModel.SuccessRegx; this.IgnoreCase = viewModel.IgnoreCase; }
IActionResult EditJsonAction(JsonTemplateNames partName, IServiceDescriptorViewModel viewModel, string serviceJson) { IServiceDescriptorViewModel originalViewModel = RestoreAndUpdateService(viewModel, serviceJson); #region 为要编辑的对象设置默认值(初始化JSON模板并设置初始数据类型) //string errorKey = ""; if (partName == JsonTemplateNames.NCParameter) { //errorKey = STATE_NCPARAMETER_ERROR; if (((NCDescriptorViewModel)originalViewModel).ParameterBody == null) { ((NCDescriptorViewModel)originalViewModel).ParameterBody = new JsonTemplate(); ((NCDescriptorViewModel)originalViewModel).ParameterBody.ValueType = Models.ValueType.Object; } } else if (partName == JsonTemplateNames.NCReturn) { //errorKey = STATE_NCRETURN_ERROR; if (((NCDescriptorViewModel)originalViewModel).ReturnBody == null) { ((NCDescriptorViewModel)originalViewModel).ReturnBody = new JsonTemplate(); ((NCDescriptorViewModel)originalViewModel).ReturnBody.ValueType = Models.ValueType.Object; } } else if (partName == JsonTemplateNames.PrimetonParameter) { //errorKey = STATE_PRIMETON_PARAMETER_ERROR; if (((PrimetonDescriptorViewModel)originalViewModel).InputBody == null) { ((PrimetonDescriptorViewModel)originalViewModel).InputBody = new JsonTemplate(); ((PrimetonDescriptorViewModel)originalViewModel).InputBody.ValueType = Models.ValueType.Object; } } else if (partName == JsonTemplateNames.PrimetonReturn) { //errorKey = STATE_PRIMETON_RETURN_ERROR; if (((PrimetonDescriptorViewModel)originalViewModel).ReturnBody == null) { ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody = new JsonTemplate(); ((PrimetonDescriptorViewModel)originalViewModel).ReturnBody.ValueType = Models.ValueType.Object; } } else if (partName == JsonTemplateNames.RESTParameter) { //errorKey = STATE_RESTJSON_ERROR; if (((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate == null) { ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate = new JsonTemplate(); ((SimpleRestfulDescriptorViewModel)originalViewModel).JsonBodyTemplate.ValueType = Models.ValueType.Integer; } } else if (partName == JsonTemplateNames.RESTReturnValue) { //errorKey = STATE_RESTRETURN_ERROR; if (((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate == null) { ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate = new JsonTemplate(); ((SimpleRestfulDescriptorViewModel)originalViewModel).ReturnJsonTemplate.ValueType = Models.ValueType.Integer; } } #endregion EditServiceJson postedJson; if (originalViewModel.ServiceType == ServiceType.NCWebService) { postedJson = Models.EditServiceJson.CreateFrom((NCDescriptorViewModel)originalViewModel, partName); } else if (originalViewModel.ServiceType == ServiceType.SimpleRESTful) { postedJson = Models.EditServiceJson.CreateFrom((SimpleRestfulDescriptorViewModel)originalViewModel, partName); } else if (originalViewModel.ServiceType == ServiceType.PrimetonService) { postedJson = Models.EditServiceJson.CreateFrom((PrimetonDescriptorViewModel)originalViewModel, partName); } else { throw new Exception("not implemented"); } TempData.Put(EDIT_JSON_CROSS_ACTION_DATA_KEY, postedJson); return(RedirectToAction(nameof(EditServiceJson))); // Exception Catch Block (old) // TempData[errorKey] = ex.Message; // TempData.Put(EDIT_SERVICE_CROSS_ACTION_DATA_KEY, originalViewModel); // if(partName == JsonTemplateNames.RESTParameter) // { // ((SimpleRestfulDescriptorViewModel)originalViewModel).SelectedTab = "nav-json"; // } // string serviceViewName; // if(originalViewModel.ServiceType == ServiceType.NCWebService) // { // serviceViewName = nameof(EditNCWebService); // } // else if(originalViewModel.ServiceType == ServiceType.SimpleRESTful) // { // serviceViewName = nameof(EditSimpleRestfulService); // } // else // { // throw new Exception("not implemented"); // } // return RedirectToAction(serviceViewName); }