/// <summary> /// 根据配置生成对应的文件 表单生成 /// </summary> /// <param name="config"></param> public static void generateForm(GenerateFormConfig_Model config) { //2.获取html //2.1根据配置拆分 var list_afterChunk = config.columns.Chunk(config.columnsInRowNumber); //2.2声明行数据容器 List <List <FormElement> > list = new List <List <FormElement> >(); foreach (var info in list_afterChunk) { List <FormElement> row_temp = new List <FormElement>(); //遍历当前行 foreach (var item_info in info) { row_temp.Add(new generateHelp().generateHtmlByType(item_info));//取列 } //生成行html list.Add(row_temp); } //3.渲染razor模板 string templatePath = FileSugar.MergeUrl(globalProperty.templateDic, "formElement", "form.cshtml"); var tempCode = RazorEngineExtension.RazorPars(templatePath, FileSugar.FileToString(templatePath), new { FormElementTable = list }); //4.将生成的form字符串写入html文件 FileSugar.WriteFile($"../../html/{config.tableName}.html", tempCode); }
public string GetControlEvent(int elementId = 0, bool isSingle = false) { //获取件动作 var eventActionTypeList = PubUiEngineGet.GetEventActionConfigList; var model = EventManager.GetInstance.GetEeventList.FindAll(it => it.Name.IsIn("getValue", "setValue").IsFalse()); foreach (var it in model) { it.ActionTypeList = eventActionTypeList; } var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "event.cshtml"); if (isSingle == true) { cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "eventSingle.cshtml"); } var html = FileSugar.FileToString(cshtmlPath); if (elementId > 0) { var events = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == elementId).ToList(); var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new { Key = model, Value = events }); return(reval); } else { var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new { Key = model, Value = new List <SysBest_ElementEvent>() }); return(reval); } }
/// <summary> /// 获取事件HTML /// </summary> /// <param name="name"></param> /// <param name="pars"></param> /// <returns></returns> public string GetEventActionHtml(string name, List <EventActionTypeParas> pars, string id) { var path = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEventActionDir, name + ".cshtml"); var cshtml = FileSugar.FileToString(path); var reval = RazorEngineExtension.RazorPars(path, cshtml, new { Data = pars, id = id }); return(reval); }
public string GetTemplateCodeByName(string tempName, object model) { string dir = FileSugar.MergeUrl(_uiEngineDir, "buildCode"); string filePath = FileSugar.MergeUrl(dir, tempName); var tempCode = RazorEngineExtension.RazorPars(filePath, FileSugar.FileToString(filePath), model); return(tempCode); }
private void button_BuilderQuery_Click(object sender, EventArgs e) { Execute(() => { var list = CommonHelper.ParseClassPropertityList(this.textEditorControl_Input.Text); var parseHtml = RazorEngineExtension.Parse(CommonHelper.Resources + @"\Query_html.cshtml", list); this.textEditorControl_Out.Text = parseHtml; }); }
/// <summary> /// 代码生成 /// </summary> /// <param name="target">生成目标</param> /// <param name="tmpFiles">模板文件</param> /// <param name="tableNodeList">表集合</param> private void GenerateCode(CodeGenTarget target, string[] tmpFiles, List <TreeNode> tableNodeList) { switch (target) { case CodeGenTarget.File: break; case CodeGenTarget.Directories: break; default: break; } if (tmpFiles.Length == 0) { MessageBox.Show("请选择模板"); return; } tableNodeList.ForEach(node => { var serversNode = node.Parent.Parent.Parent; var serversNodeTag = (TreeNodeTag)serversNode.Tag; var servers = (Servers)serversNodeTag.Tag; var dataBaseName = node.Parent.Parent.Text; var tableName = node.Text; //生成文件代码 for (int j = 0; j < tmpFiles.Length; j++) { var arr = Path.GetFileNameWithoutExtension(tmpFiles[j]).Split('_'); var fileType = arr.Length < 2 ? "cs" : arr[1];//文件类型 var codeType = CommonHelper.GetCodeTypeName(fileType); var fields = new BLL_Database(servers.Type).GetFields(servers.Id, dataBaseName, tableName); var result = RazorEngineExtension.Parse <RazorPageModel>(tmpFiles[j], new RazorPageModel { TableName = tableName, Fields = fields }); switch (target) { case CodeGenTarget.Directories: string fileName = arr[0].ToUpper() + "_" + tableName + "." + fileType; string filePath = Path.Combine(AppGlobalConfig.Intance.Config.FileSaveDirectory, fileName); filePath.WriteAllText(result); break; default: var formCode = new Form_Code(tableName + "_" + arr[0], result, codeType); formCode.Show(Form_Main.Instance.dockPanel); break; } } }); }
//public void RestoreLayoutElement(string htmlId, string key, int addressId, int languageId) //{ // var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, "layout", key + ".cshtml"); // var content = _.sysBest_PageContentService.GetSingle(it => it.LanguageId == languageId && it.AddressId == addressId); // var elementList = _.sysBest_ElementService.GetElementListByHtmlIdArray(new string[] { htmlId }); // content.Html = GetRestoreHtml(content.Html, elementList, htmlId); // _.sysBest_PageContentService.Update(content); //} /// <summary> /// 获取还原后的HTML /// </summary> /// <param name="html"></param> /// <param name="elementList"></param> /// <param name="htmlId"></param> /// <returns></returns> public string GetRestoreHtml(string html, List <SysBest_Element> elementList, string htmlId) { if (!elementList.Any(el => el.Html_Id == htmlId)) { return(html); } //根据htmlID查对应的元素 var ele = elementList.Single(el => el.Html_Id == htmlId); //正则匹配出对应的占位span标签 var span = Regex.Match(html, @"\<span.{1,30}?data\-id\=""" + htmlId + @""".*?\<\/span\>").Value; //正则匹配出控件类型 var categoryKey = Regex.Match(span, @"\<.*?data\-categorykey\=""(.+?)"".*?", RegexOptions.Singleline).Groups[1].Value; //正则匹配控件Key var key = Regex.Match(span, @"\<.*?data\-key\=""(.+?)"".*?").Groups[1].Value; var buildTemplatePath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, categoryKey, "items", key, "build.cshtml"); if (FileSugar.IsExistFile(buildTemplatePath)) { BuildModel buildModel = new BuildModel(); buildModel.elementId = ele.Id; buildModel.addressId = ele.AddressId; var attrs = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == ele.Id).ToList(); var events = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == ele.Id).ToList(); buildModel.attrList = attrs.Select(attr => new KeyValuePair <string, string>(attr.Key, attr.Value)).ToDictionary(it => it.Key, it => it.Value); if (buildModel.attrList == null) { buildModel.attrList = new Dictionary <string, string>(); } buildModel.attrList.Add("name", ele.EleName); buildModel.eventList = new Dictionary <string, string>(); foreach (var eve in events) { List <EventActionTypeParas> pars = new List <EventActionTypeParas>(); if (eve.Pars.IsValuable()) { pars = eve.Pars.JsonToModel <List <EventActionTypeParas> >(); } string eveValue = GetEventActionHtml(eve.Value, pars, ele.EleName); buildModel.eventList.Add(eve.Key, eveValue); } var cshtml = FileSugar.FileToString(buildTemplatePath); buildModel.api = GetApiUrlByElement(ele); string finallyThisIsMyParsedTemplate = ""; finallyThisIsMyParsedTemplate = RazorEngineExtension.RazorPars(buildTemplatePath, cshtml, buildModel); var replaceHtml = finallyThisIsMyParsedTemplate; html = html.Replace(span, replaceHtml); } return(html); }
//获取插入ueditor里面的HTML /// <summary> /// 获取插入ueditor里面的HTML /// </summary> /// <param name="key">控件的Key</param> /// <param name="categoryKey">控件类型的Key</param> /// <param name="hasSource"></param> /// <returns></returns> public string GetEditor(string key, string categoryKey, bool?hasSource) { //控件模板地址 var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "template.cshtml"); //控件图标地址 var icon = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsWebDir, categoryKey, "items", key, "icon.png"); //传给raozr的Model var model = new { categoryKey = categoryKey, key = key, icon = icon, hasSource = hasSource }; //razor模板对应的文本 var html = FileSugar.FileToString(cshtmlPath); //解析razor生成最终的文本 var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, model); return(reval); }
public string GetControlAttribute(string key, string categoryKey, int elementId = 0) { var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, categoryKey, "items", key, "attribute.cshtml"); var html = FileSugar.FileToString(cshtmlPath); if (elementId > 0) { var attrs = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == elementId).ToList(); var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, attrs); return(reval); } else { var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new List <SysBest_ElementAttr>()); return(reval); } }
public static string getParseString(string templatePath, object obj) { var tempCode = RazorEngineExtension.RazorPars(templatePath, FileSugar.FileToString(templatePath), obj); return(tempCode); }