Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        /// <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;
     });
 }
Beispiel #6
0
        /// <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;
                    }
                }
            });
        }
Beispiel #7
0
        //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);
        }
Beispiel #8
0
        //获取插入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);
        }
Beispiel #9
0
        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);
        }