public ActionResult Edit(int id, ProductDto instance) { InstanceViewModel model = new InstanceViewModel(InstanceType); if (ModelState.IsValid) { instance.Id = id; IFacadeUpdateResult <ProductData> result = SaveProduct(instance); if (result.IsSuccessful) { ProductDto savedInstance = result.ToDto <ProductDto>(new ProductConverter()); model.Instance = savedInstance; return(EditView(model)); } else { // Deal with Update failed result ProcUpdateResult(result.ValidationResult, result.Exception); } } model.Instance = instance; return(EditView(model)); }
public static InstanceViewModel SetRoles(this InstanceViewModel instance, IEnumerable <InstanceRoleViewModel> roles) { instance.Roles = roles.ToList(); return(instance); }
public static InstanceViewModel SetLogins(this InstanceViewModel instance, IEnumerable <InstanceLoginViewModel> logins) { instance.Logins = logins.ToList(); return(instance); }
public static InstanceViewModel ApplyCustomization(this InstanceViewModel instance, Assign assigns) { instance.IsHidden = assigns.IsHidden; instance.Alias = assigns.Alias; return(instance); }
protected ActionResult EditView(InstanceViewModel model) { model.CurrentLanguageId = CurrentLanguageId; return(View("InstanceEdit", model)); }
protected ActionResult DetailView(InstanceViewModel model) { model.CurrentLanguageId = CurrentLanguageId; return(View("InstanceDetail", model)); }
public static void SeparateFromInstance(this Assign assign, InstanceViewModel instance) { assign.Alias = instance.Alias; assign.IsHidden = Convert.ToBoolean(instance.IsHidden); }
public static void MergeWithInstance(this Assign assign, InstanceViewModel instance) { instance.IsHidden = assign.IsHidden; instance.Alias = assign.Alias; }
private InstanceViewModel GetInstance() { logger.LogDebug("GetInstanceAsync()"); Website website; InstanceViewModel instance; try { logger.LogDebug("Loading '{0}' from cache", instanceKey); if (!memoryCache.TryGetValue(instanceKey, out instance)) { logger.LogDebug("Empty cache for '{0}'. Loading instance from DB", instanceKey); website = unitOfWork.Websites.GetWebsiteInstanceByHost(instanceHost); if (website == null) { throw new NotFoundException($"Instance for '{instanceHost}' not found"); } instance = new InstanceViewModel { Id = website.Id, Name = website.Name, Description = website.Description, Tagline = website.Tagline, HeaderImage = website.HeaderImage, Culture = website.Culture, UrlFormat = website.UrlFormat, DateFormat = website.DateFormat, SiteUrl = website.SiteUrl, ArticleLimit = website.ArticleLimit, PageTitle = website.Name, ContactDetails = new ContactDetailsViewModel { Address = website.Address, Phone = website.Phone, Email = website.Email, }, ApiDetails = new ApiDetailsViewModel { FacebookAppId = website.FacebookAppId, FacebookApiVersion = website.FacebookApiVersion, DisqusShortName = website.DisqusShortName }, SocialMedia = new SocialMediaViewModel { Facebook = website.Facebook, Twitter = website.Twitter, Instagram = website.Instagram, LinkedIn = website.LinkedIn }, Google = new GoogleViewModel { GoogleAnalytics = website.GoogleAnalytics, GoogleRecaptchaSiteKey = website.GoogleRecaptchaSiteKey, GoogleRecaptchaSecretKey = website.GoogleRecaptchaSecretKey } }; SaveInstanceToCache(instance); } } catch (Exception ex) { logger.LogError(ex, "Error when trying to load Instance"); throw; } return(instance); }
private void InitializeExecutionTab() { m_executionVM = new InstanceViewModel(); tabExecution.DataContext = m_executionVM; m_executionVM.ParentWindow = this; }
/// <summary> /// wangxg 19.10 重写QueryInstance /// </summary> /// <param name="pagerInfo"></param> /// <param name="searchKey"></param> /// <param name="workflowCode"></param> /// <param name="unitID"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <param name="instaceState"></param> /// <returns></returns> public JsonResult QueryInstance(PagerInfo pagerInfo, string searchKey, string workflowCode, string unitID, DateTime?startTime, DateTime?endTime, int instaceState) { return(this.ExecuteFunctionRun(() => { List <InstanceViewModel> griddata = new List <InstanceViewModel>(); GridViewModel <InstanceViewModel> result = new GridViewModel <InstanceViewModel>(0, griddata, pagerInfo.sEcho); #region 查询条件的初始化和整理 if (string.IsNullOrEmpty(unitID)) { string rootOrgSql = "SELECT OBJECTID FROM H3.OT_ORGANIZATIONUNIT WHERE ISROOTUNIT=1"; unitID = Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(rootOrgSql).ToString(); //unitID = UserValidator.UserID; } if (string.IsNullOrEmpty(workflowCode)) { //获取所有有权限发起的流程模板 DataTable dtworkflows = Engine.PortalQuery.QueryWorkflow(this.UserValidator.RecursiveMemberOfs, this.UserValidator.ValidateAdministrator()); //根据可以发起的流程模板编码,倒推获取所有的节点集合 List <string> aclWorkflowCodes = new List <string>(); foreach (DataRow row in dtworkflows.Rows) { if (aclWorkflowCodes.Contains(row[WorkItem.PropertyName_WorkflowCode])) { continue; } aclWorkflowCodes.Add(row[WorkItem.PropertyName_WorkflowCode] + string.Empty); } string sql = $@"SELECT A.SCHEMACODE, C.NAME ORGSCOPE, B.NAME USR, B.CODE USR_CODE, A.ADMINISTRATOR, A.CREATEBIZOBJECT, A.VIEWDATA FROM H3.OT_BIZOBJECTACL A LEFT JOIN H3.OT_USER B ON A.USERID=B.OBJECTID LEFT JOIN H3.OT_ORGANIZATIONUNIT C ON A.ORGSCOPE = C.OBJECTID LEFT JOIN H3.OT_GROUP Q ON A.USERID=Q.OBJECTID LEFT JOIN H3.OT_GROUPCHILD W ON Q.OBJECTID = W.PARENTOBJECTID LEFT JOIN H3.OT_USER Y ON W.CHILDID = Y.OBJECTID LEFT JOIN H3.OT_ORGANIZATIONUNIT X ON A.USERID=X.OBJECTID WHERE 1=1 AND (A.ADMINISTRATOR=1 OR A.CREATEBIZOBJECT=1 OR A.VIEWDATA=1 ) AND (B.CODE='{UserValidator.UserCode}' OR Y.CODE = '{UserValidator.UserCode}' OR EXISTS --UUID是当前用户所属组织 ( -- 联合组织和分组及用户 SELECT DISTINCT R.CODE, P.CODE FROM H3.OT_ORGANIZATIONUNIT T LEFT JOIN H3.OT_GROUP M ON T.OBJECTID = M.PARENTID LEFT JOIN H3.OT_GROUPCHILD N ON M.OBJECTID = N.PARENTOBJECTID LEFT JOIN H3.OT_USER P ON N.CHILDID = P.OBJECTID LEFT JOIN H3.OT_USER R ON R.PARENTID = T.OBJECTID WHERE R.CODE='{UserValidator.UserCode}' OR P.CODE='{UserValidator.UserCode}' START WITH T.OBJECTID = A.USERID -- UUID是组织节点 CONNECT BY PRIOR T.OBJECTID = T.PARENTID ) )"; DataTable schemas = Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sql); if (schemas != null && schemas.Rows.Count > 0) { foreach (DataRow row in schemas.Rows) { if (aclWorkflowCodes.Contains(row["SCHEMACODE"])) { continue; } aclWorkflowCodes.Add(row["SCHEMACODE"] + string.Empty); } } workflowCode = string.Join(",", aclWorkflowCodes); } string startTimeFilter = ""; if (startTime != null) { startTimeFilter = $" A.CREATEDTIME >= to_date('{startTime.Value.ToString("yyyy-MM-dd 00:00:00")}','yyyy-mm-dd hh24:mi:ss') AND "; //startTime = DateTime.Now.AddDays(-30); } string endTimeFilter = ""; if (endTime != null) { endTimeFilter = $" A.CREATEDTIME <= to_date('{endTime.Value.ToString("yyyy-MM-dd 23:59:59")}','yyyy-mm-dd hh24:mi:ss') AND "; //endTime = DateTime.Now; } string stat = "(1)"; switch (instaceState) { case 0: stat = "(0,1,2)"; break; //进行中 case 1: stat = "(4)"; break; //结束 case 2: stat = "(5)"; break; //取消 } workflowCode = "'" + workflowCode.Replace("'", "").Replace("--", "").Replace(",", "','") + "'"; unitID = unitID.Replace("'", "").Replace("--", ""); string searchFilter = ""; if (!string.IsNullOrEmpty(searchKey)) { searchKey = searchKey.Replace("'", "").Replace("--", "").Trim(); searchFilter = $" INSTANCENAME LIKE '%{searchKey}%' AND "; } #endregion string countSql = @" SELECT COUNT(1) "; #region selectSql string selectSql = @" SELECT DISTINCT A.OBJECTID InstanceID , A.PRIORITY Priority , INSTANCENAME InstanceName , A.WORKFLOWCODE WorkflowCode , C.WORKFLOWNAME WorkflowName , A.ORIGINATOR Originator , A.ORIGINATORNAME OriginatorName , A.CREATEDTIME CreatedTime , B.PARENTID ORGUNIT --, D.DISPLAYNAME ApproverLink --, D.PARTICIPANTNAME Approver , A.STATE InstanceState , A.PLANFINISHTIME PlanFinishTime , A.FINISHTIME FinishedTime , A.EXCEPTIONAL Exceptional "; #endregion #region adminSql string adminSql = $@"FROM H3.OT_INSTANCECONTEXT A JOIN H3.OT_USER B ON A.ORIGINATOR = B.OBJECTID JOIN H3.OT_WORKFLOWCLAUSE C ON A.WORKFLOWCODE = C.WORKFLOWCODE --LEFT JOIN H3.OT_WORKITEM D ON A.OBJECTID = D.INSTANCEID WHERE {searchFilter} {startTimeFilter} {endTimeFilter} A.STATE in {stat} AND A.WORKFLOWCODE IN ({workflowCode}) AND (A.ORIGINATOR = '{unitID}' OR B.PARENTID IN ( SELECT OBJECTID --, NAME FROM H3.OT_ORGANIZATIONUNIT START WITH OBJECTID = '{unitID}' -- 前端提交的 只查看此组织范围 CONNECT BY PRIOR OBJECTID = PARENTID ))"; #endregion #region commSql string commSql = $@" FROM H3.OT_INSTANCECONTEXT A JOIN H3.OT_USER B ON A.ORIGINATOR = B.OBJECTID JOIN H3.OT_WORKFLOWCLAUSE C ON A.WORKFLOWCODE = C.WORKFLOWCODE --LEFT JOIN H3.OT_WORKITEM D ON A.OBJECTID = D.INSTANCEID WHERE {searchFilter} {startTimeFilter} {endTimeFilter} A.STATE in {stat} AND A.WORKFLOWCODE IN ({workflowCode}) AND (A.ORIGINATOR = '{unitID}' OR B.PARENTID IN ( SELECT OBJECTID --, NAME FROM H3.OT_ORGANIZATIONUNIT START WITH OBJECTID = '{unitID}' -- 前端提交的 只查看此组织范围 CONNECT BY PRIOR OBJECTID = PARENTID )) AND (B.CODE ='{UserValidator.UserCode}' OR (EXISTS -- 用户是'个人'且拥有全组织的流程权限 ( SELECT 1 FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_USER X ON Z.USERID=X.OBJECTID WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 2 AND X.CODE ='{UserValidator.UserCode}' -- 模型权限 全组织 ) OR EXISTS -- 用户是'分组'且拥有全组织的流程权限 ( SELECT 1 FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_GROUP M ON Z.USERID=M.OBJECTID JOIN H3.OT_GROUPCHILD N ON M.OBJECTID = N.PARENTOBJECTID JOIN H3.OT_USER P ON N.CHILDID = P.OBJECTID WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 2 AND P.CODE = '{UserValidator.UserCode}' -- 模型权限 全组织 ) OR EXISTS -- 用户是'组织'且拥有全组织的流程权限 ( SELECT 1 FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_ORGANIZATIONUNIT X ON Z.USERID=X.OBJECTID --权限给的是组织,不是人 WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 2 AND EXISTS --UUID是当前用户所属组织 ( -- 联合组织和分组及用户 SELECT DISTINCT R.CODE, P.CODE FROM H3.OT_ORGANIZATIONUNIT T LEFT JOIN H3.OT_GROUP M ON T.OBJECTID = M.PARENTID LEFT JOIN H3.OT_GROUPCHILD N ON M.OBJECTID = N.PARENTOBJECTID LEFT JOIN H3.OT_USER P ON N.CHILDID = P.OBJECTID LEFT JOIN H3.OT_USER R ON R.PARENTID = T.OBJECTID WHERE R.CODE='{UserValidator.UserCode}' OR P.CODE='{UserValidator.UserCode}' START WITH T.OBJECTID = Z.USERID -- UUID是组织节点 CONNECT BY PRIOR T.OBJECTID = T.PARENTID ) ) OR EXISTS -- 用户是'个人'且拥有部分组织的流程权限 ( SELECT OBJECTID --, NAME FROM H3.OT_ORGANIZATIONUNIT WHERE B.PARENTID IN OBJECTID START WITH OBJECTID IN ( SELECT ORGSCOPE FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_USER X ON Z.USERID=X.OBJECTID WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 0 AND X.CODE ='{UserValidator.UserCode}' -- 模型权限 特定范围 ) CONNECT BY PRIOR OBJECTID = PARENTID ) OR EXISTS -- 用户是'分组'且拥有部分组织的流程权限 ( SELECT OBJECTID --, NAME FROM H3.OT_ORGANIZATIONUNIT WHERE B.PARENTID IN OBJECTID START WITH OBJECTID IN ( SELECT ORGSCOPE FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_GROUP M ON Z.USERID=M.OBJECTID JOIN H3.OT_GROUPCHILD N ON M.OBJECTID = N.PARENTOBJECTID JOIN H3.OT_USER P ON N.CHILDID = P.OBJECTID WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 0 AND P.CODE = '{UserValidator.UserCode}' -- 模型权限 特定范围 ) CONNECT BY PRIOR OBJECTID = PARENTID ) OR EXISTS -- 用户是'组织'且拥有部分组织的流程权限 ( SELECT OBJECTID --, NAME FROM H3.OT_ORGANIZATIONUNIT WHERE B.PARENTID IN OBJECTID START WITH OBJECTID IN ( SELECT ORGSCOPE FROM H3.OT_BIZOBJECTACL Z JOIN H3.OT_ORGANIZATIONUNIT X ON Z.USERID=X.OBJECTID --权限给的是组织,不是人 WHERE SCHEMACODE = A.WORKFLOWCODE AND (Z.ADMINISTRATOR=1 OR Z.CREATEBIZOBJECT=1 OR Z.VIEWDATA=1 ) AND Z.ORGSCOPETYPE = 0 AND EXISTS --UUID是当前用户所属组织 ( -- 联合组织和分组及用户 SELECT DISTINCT R.CODE, P.CODE FROM H3.OT_ORGANIZATIONUNIT T LEFT JOIN H3.OT_GROUP M ON T.OBJECTID = M.PARENTID LEFT JOIN H3.OT_GROUPCHILD N ON M.OBJECTID = N.PARENTOBJECTID LEFT JOIN H3.OT_USER P ON N.CHILDID = P.OBJECTID LEFT JOIN H3.OT_USER R ON R.PARENTID = T.OBJECTID WHERE R.CODE='{UserValidator.UserCode}' OR P.CODE='{UserValidator.UserCode}' START WITH T.OBJECTID = Z.USERID -- UUID是组织节点 CONNECT BY PRIOR T.OBJECTID = T.PARENTID ) ) CONNECT BY PRIOR OBJECTID = PARENTID ) ))"; #endregion int total = Convert.ToInt32(Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(countSql + (UserValidator.ValidateAdministrator() ? adminSql : commSql)).ToString()); // 记录总数 #region pageSql string pageSql = $@"SELECT * FROM ( SELECT ROWNUM AS ROWNO, AA.* FROM ( {selectSql + (UserValidator.ValidateAdministrator() ? adminSql : commSql)} ORDER BY A.CREATEDTIME DESC ) AA WHERE ROWNUM <= {pagerInfo.EndIndex} ) BB WHERE ROWNO >= {pagerInfo.StartIndex}"; #endregion DataTable dt = Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(pageSql); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { #region 构造行 inst InstanceViewModel inst = new InstanceViewModel() { InstanceID = row["InstanceID"] + string.Empty, InstanceName = row["InstanceName"] + string.Empty, InstanceState = row["InstanceState"] + string.Empty, Approver = string.Empty, ApproverLink = string.Empty, CreatedTime = row["CreatedTime"] + string.Empty, Originator = row["Originator"] + string.Empty, OriginatorName = row["OriginatorName"] + string.Empty, WorkflowCode = row["WorkflowCode"] + string.Empty, FinishedTime = row["FinishedTime"] + string.Empty, PlanFinishTime = row["PlanFinishTime"] + string.Empty, WorkflowName = row["WorkflowName"] + string.Empty, Priority = row["Priority"] + string.Empty, Exceptional = Convert.ToInt32(row["Exceptional"] + string.Empty) == 1 ? true : false }; string approvSql = $"SELECT DISPLAYNAME, PARTICIPANTNAME FROM H3.OT_WORKITEM D WHERE D.INSTANCEID='{inst.InstanceID}'"; DataTable approvDt = Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(approvSql); if (approvDt != null && approvDt.Rows.Count > 0) { inst.ApproverLink = approvDt.Rows[0]["DISPLAYNAME"] + string.Empty; List <string> appro = new List <string>(); for (int i = 0; i < approvDt.Rows.Count; i++) { appro.Add(approvDt.Rows[i]["PARTICIPANTNAME"] + string.Empty); } inst.Approver = string.Join(",", appro); } #endregion griddata.Add(inst); } } result = new GridViewModel <InstanceViewModel>(total, griddata, pagerInfo.sEcho); result.ExtendProperty = workflowCode; return Json(result, JsonRequestBehavior.AllowGet); })); }
protected override Task StartExecution(object parameter) { var instancesByPath = this._Parent.Instances.ToDictionary(i => i.ManagementObject.Path); return new Task(() => { RunningMessage = "Refreshing instance list of " + this._Parent.ManagementClass.Name; var mgmtClass = _Parent.CreateManagementClass(); var data = ManagementObjectData.Create(mgmtClass); OnDispatcher(() => { _Parent.Instances.Selected = new InstanceViewModel(_Parent, data); }); foreach(ManagementObject instance in mgmtClass.GetInstances()) { var localData = ManagementObjectData.Create(instance); OnDispatcher(() => { InstanceViewModel vm = null; if(!instancesByPath.TryGetValue(localData.Path, out vm)) { vm = new InstanceViewModel(_Parent, localData); _Parent.Instances.Add(vm); } vm.ManagementObject = localData; }); } }); }
public async Task <IActionResult> Edit(InstanceViewModel viewModel) { viewModel.ParameterMappings = new List <ParameterMapping>(); if (Request.Form.ContainsKey("item.ServerPath")) { var sources = Request.Form["item.Source"]; var serverPaths = Request.Form["item.ServerPath"]; var mappingTypes = Request.Form["item.MappingType"]; var clientPaths = Request.Form["item.ClientPath"]; for (int i = 0; i < serverPaths.Count; i++) { ParameterMapping mapping = new ParameterMapping(); mapping.Source = sources[i]; mapping.ServerPath = serverPaths[i]; mapping.MappingType = Enum.Parse <MappingType>(mappingTypes[i]); //(MappingType)int.Parse(mappingTypes[i]); mapping.ClientPath = clientPaths[i]; viewModel.ParameterMappings.Add(mapping); } } if (ModelState.IsValid) { if (viewModel.ClientID <= 0 || viewModel.ServiceID <= 0) { TempData[CROSS_ERROR_KEY] = "没有选择客户或者服务"; TempData.Put(CROSS_VIEWMODEL_KEY, viewModel); RedirectToAction(nameof(Edit)); } try { EsbInstance instance; if (viewModel.InstanceID > 0) { instance = await _esbModelContext.Instances.Where(m => m.ID == viewModel.InstanceID) .Include(m => m.InstanceMapping).SingleAsync(); if (instance == null) { TempData[CROSS_ERROR_KEY] = "没有找到要修改的API实例(是否已被删除?)"; TempData.Put(CROSS_VIEWMODEL_KEY, viewModel); RedirectToAction(nameof(Edit)); } } else { instance = new EsbInstance(); } instance.ActiveStatus = viewModel.ActiveStatus ? 1 : 0; instance.ClientID = viewModel.ClientID; instance.Description = viewModel.Description; instance.Name = viewModel.InstanceName; instance.ServiceID = viewModel.ServiceID; if (viewModel.InstanceID > 0) { _esbModelContext.Update(instance); } else { _esbModelContext.Add(instance); } await _esbModelContext.SaveChangesAsync(); if (instance.InstanceMapping == null) { instance.InstanceMapping = new InstanceMapping { InstanceID = instance.ID, ParameterMappings = JsonConvert.SerializeObject(viewModel.ParameterMappings) }; _esbModelContext.Add(instance.InstanceMapping); } else { instance.InstanceMapping.InstanceID = instance.ID; instance.InstanceMapping.ParameterMappings = JsonConvert.SerializeObject(viewModel.ParameterMappings); _esbModelContext.Update(instance.InstanceMapping); } await _esbModelContext.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } catch (Exception ex) { TempData[CROSS_ERROR_KEY] = ex.Message; } } else { TempData[CROSS_ERROR_KEY] = "输入数据有错误"; } TempData.Put(CROSS_VIEWMODEL_KEY, viewModel); return(RedirectToAction(nameof(Edit))); }
public async Task <IActionResult> Create(int serviceId) { EsbService service = await _esbModelContext.Services.FindAsync(serviceId); if (service == null) { return(RedirectToAction(nameof(Create))); } InstanceViewModel viewModel = new InstanceViewModel { ActiveStatus = true, Description = service.FullDescription, InstanceName = service.Name, ServiceID = service.ID, ServiceName = service.Name, ParameterMappings = new List <ParameterMapping>() }; // create default mappings if (service.Type == ServiceType.SimpleRESTful) { var descriptor = JsonConvert.DeserializeObject <SimpleRestfulDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (!string.IsNullOrWhiteSpace(descriptor.RouteDataTemplate)) { string[] parts = descriptor.RouteDataTemplate.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < parts.Length; i++) { string s = parts[i].Trim(); viewModel.ParameterMappings.Add(new ParameterMapping { Source = "route", ServerPath = s, MappingType = MappingType.Path, ClientPath = s }); } } if (!string.IsNullOrWhiteSpace(descriptor.QueryStringTemplate)) { StringHelper.MapQueryFormParametersInto(viewModel.ParameterMappings, "query", descriptor.QueryStringTemplate); } if (!string.IsNullOrWhiteSpace(descriptor.FormBodyTemplate)) { StringHelper.MapQueryFormParametersInto(viewModel.ParameterMappings, "form", descriptor.FormBodyTemplate); } if (descriptor.JsonBodyTemplate != null) { //优先级最高的是JSON模板 descriptor.JsonBodyTemplate.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else if (service.Type == ServiceType.NCWebService) { var descriptor = JsonConvert.DeserializeObject <NCDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (descriptor.ParameterBody != null) { descriptor.ParameterBody.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else if (service.Type == ServiceType.PrimetonService) { var descriptor = JsonConvert.DeserializeObject <PrimetonDescriptorViewModel>(service.ServiceDescriptor); if (descriptor == null) { throw new Exception($"选择的服务{service.Name}尚未定义服务协定"); } if (descriptor.InputBody != null) { descriptor.InputBody.GenerateMappingInto(viewModel.ParameterMappings, "", ""); } } else { throw new Exception("使用了尚未实现的服务类型"); } TempData.Put(CROSS_VIEWMODEL_KEY, viewModel); return(RedirectToAction(nameof(Edit))); }