private void CreateViewFiles(AddNewBusinessModel parameter, ProjectItem folder) { foreach (var viewFileViewModel in parameter.ViewFiles) { var model = new ViewFileModel { BusinessName = parameter.BusinessName, Namespace = GetNamespace(parameter.ViewFolder), FileName = viewFileViewModel.FileName, IsPopup = viewFileViewModel.IsPopup, ViewFolder = parameter.ViewFolder, ViewFiles = parameter.ViewFiles }; foreach (var ext in new[] { ".cshtml", ".js" }) { var fileName = viewFileViewModel.FileName + ext; _statusBar.Progress(true, $"Generating view file: {fileName}", _steps++, _totalSteps); if (FindProjectItem(folder, fileName, ItemType.PhysicalFile) != null) { continue; } string content = Engine.Razor.RunCompile(ext == ".cshtml" ? "CshtmlTemplate" : "JsTemplate", typeof(ViewFileModel), model); CreateAndAddFile(folder, fileName, content); } } }
public Task <string> Render(ViewFileModel context) { using (var serviceScope = _scopeFactory.CreateScope()) { var helper = serviceScope.ServiceProvider.GetRequiredService <OfficialRazorViewToStringRenderer>(); return(helper.RenderViewToStringAsync(context.TemplateFolderNames, context)); } }
public async Task <ActionResult> Get() { ViewFileModel viewFileModel = new ViewFileModel() { TemplateFolderNames = "/Application/Dto/ListDtoTemplate.cshtml", CreateTime = DateTime.Now, EmailAddress = Project.EmailAddress, Author = Project.Author, TableName = "WebInfos", ProjectName = "SJNScaffolding", IdType = IdType.Long, TemplateFolder = @"..\..\..\SJNScaffolding.WPF\Templates", OutputFolder = Project.OutputPath, TypeColumnNames = TestHelper.GetColunmsList() }; foreach (var itemFolder in new[] { "Views", "JS" }) { foreach (var templateName in new[] { "IndexTemplate", "CreateOrUpdateModalTemplate" }) { viewFileModel.TemplateFolderNames = "/Views/" + itemFolder + "-" + templateName + ".cshtml"; string content = await _templateEngine.Render(viewFileModel); string fileName = templateName.Replace("JS", "").Replace("Template", ".").Replace("Views", "."); if (itemFolder.Equals("JS")) { fileName += "js"; } else { fileName += "cshtml"; } // FileHelper.CreateFile(_baseUrl + _parameter.ViewFolder, fileName, content); } } //await _addNewBussinessHelper.Execute(new ViewFileModel() //{ // TemplateFolderNames = "/Application/Dto/ListDtoTemplate.cshtml", // CreateTime = DateTime.Now, // EmailAddress = _project.EmailAddress, // Author = _project.Author, // TableName = "WebInfos", // ProjectName = "SJNScaffolding", // IdType = IdType.Long, // TemplateFolder = @"..\..\..\SJNScaffolding.WPF\Templates", // OutputFolder = _project.OutputPath, // TypeColumnNames = TestHelper.GetColunmsList() //}); return(Content("OJBK")); }
public async Task <IActionResult> ReadBoard(int BoardType, int BoardId) { using (var session = _accountContext.SessionFactory.OpenSession()) using (var Trans = session.BeginTransaction()) { AttachableViewBoardModel model = new AttachableViewBoardModel(); model.BoardType = BoardType; model.Username = HttpContext.User.Identity.Name; var attachFiles = await session.CreateCriteria <AttachFileRepositary>() .Add(Restrictions.Eq("Boardid", BoardId) && Restrictions.Eq("Grouptype", BoardType)).ListAsync <AttachFileRepositary>(); List <ViewFileModel> attachViewFiles = new List <ViewFileModel>(); foreach (AttachFileRepositary file in attachFiles) { ViewFileModel fileModel = new ViewFileModel() { FileId = file.Id, Filename = file.Filename, Filetype = file.Contentstype, KBSize = file.Contents.Length / 1024 }; attachViewFiles.Add(fileModel); } switch (BoardType) { case 0: // 공지사항 NoticeBoard board = await session.CreateCriteria <NoticeBoard>().Add(Restrictions.Eq("ID", BoardId)).UniqueResultAsync <NoticeBoard>(); if (board == null) { return(BadRequest("존재하지 않는 게시글입니다")); } //UserAccount account = await session.CreateCriteria<UserAccount>().Add(Restrictions.Eq("ID", BoardId)).UniqueResultAsync<UserAccount>(); model.Title = board.Title; model.Contents = board.Contents; board.ViewCount++; model.Createts = board.Createts; model.ViewCount = board.ViewCount; model.VIewFileModels = attachViewFiles.ToArray(); await session.UpdateAsync(board); await Trans.CommitAsync(); break; default: return(BadRequest("없는 게시판의 글입니다")); } return(Ok(model)); } }
public async Task Build(List <TypeColumnName> typeColumnNames) { try { Template[] templates = _project.BuildTasks.Templates; bool isWebUpload = typeColumnNames.Exists(u => u.WebuploadColunm.IsWebUpload); foreach (var buildKv in templates) { if (buildKv.IsExcute == false) { continue; } //此模板是ViewModel,只有有上传控件时才生成模板 if (buildKv.Key == "/ViewModel/EntityViewModel.cshtml" && isWebUpload == false) { continue; } var output = buildKv.Output; var addViewModel = new ViewFileModel() { TemplateFolderNames = buildKv.Key, CreateTime = DateTime.Now, EmailAddress = _project.EmailAddress, Author = _project.Author, TableName = _project.TableName, ProjectName = _project.ProjectName, IdType = _project.IdType, OutputFolder = _project.OutputPath, TypeColumnNames = typeColumnNames }; string content = await _templateEngine.Render(addViewModel); var fileName = Handlebars.Compile(buildKv.Output.Name)(addViewModel) ?? ""; string folder = Handlebars.Compile(buildKv.Output.Folder)(addViewModel) ?? ""; FileHelper.CreateFile(_project.OutputPath + folder, fileName, content); } } catch (Exception e) { Console.WriteLine(e); throw; } }
public async Task Execute(ViewFileModel viewFileModel) { this._parameter = new AddNewBussinessModel(viewFileModel.ProjectName, viewFileModel.TableName, viewFileModel.TemplateFolder); this._viewFileModel = viewFileModel; this._baseUrl = viewFileModel.OutputFolder; await CreateServiceInterfaceFile(); await CreateServiceFile(); await CreateDtoFiles(); await CreateViewJsFiles(); await CreateContorlFiles(); if (_viewFileModel.WebUploadList.Any()) { await CreateViewModel(); } await CreateCoreEntity(); }
public void CreateService() { ViewFileModel vf = new ViewFileModel { CreateTime = DateTime.Now, EmailAddress = "*****@*****.**", Author = "IGeekFan", TableName = "WebInfos", ProjectName = "SJNScaffolding", TypeColumnNames = TestHelper.GetColunmsList(), IdType = IdType.Long, TemplateFolder = @"..\..\..\SJNScaffolding.WPF\Templates", OutputFolder = @"..\..\..\SJNScaffolding.WPF\Outputs" }; var bussiness = new AddNewBussinessWpfHelper(vf); bussiness.Execute(); }
public async Task <string> Build(List <TypeColumnName> typeColumnNames, bool download = false) { try { Template[] templates = _project.BuildTasks.Templates; bool isWebUpload = typeColumnNames.Exists(u => u.WebuploadColunm.IsWebUpload); foreach (var buildKv in templates) { if (buildKv.IsExcute == false) { continue; } //此模板是ViewModel,只有有上传控件时才生成模板 if (buildKv.Key == "/ViewModel/EntityViewModel.cshtml" && isWebUpload == false) { continue; } var addViewModel = new ViewFileModel() { TemplateFolderNames = buildKv.Key, CreateTime = DateTime.Now, EmailAddress = _project.EmailAddress, Author = _project.Author, TableName = _project.TableName, ProjectName = _project.ProjectName, IdType = _project.IdType, OutputFolder = _project.OutputPath, TypeColumnNames = typeColumnNames }; string content = await _templateEngine.Render(addViewModel); var fileName = Handlebars.Compile(buildKv.Output.Name)(addViewModel) ?? ""; string folder = Handlebars.Compile(buildKv.Output.Folder)(addViewModel) ?? ""; FileHelper.CreateFile(_project.OutputPath + folder, fileName, content); } } catch (Exception e) { Console.WriteLine(e); _logger.LogError(e.Message); throw; } if (download) { string outputUrl = FileHelper.GetCompressDirPath(_project.OutputPath, new List <string>() { _project.OutputPath }); string relaName = outputUrl.Substring(outputUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); string path = Directory.GetCurrentDirectory() + "/wwwroot/file/" + relaName; byte[] fileBuffer = FileHelper.File2Bytes(outputUrl); FileHelper.Bytes2File(fileBuffer, path); FileHelper.DeletePath(_project.OutputPath); return("/file/" + relaName); } return(string.Empty); }
private void Button_Click(object sender, RoutedEventArgs e) { try { //表中字段名 List <string> columnsList = this.Columns.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select(u => u.Trim()).ToList(); //中文名 List <string> columnsNameList = this.ColumnsName.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select(u => u.Trim()).ToList(); //字段填充到HTML中的内容 List <string> columnsHtmlList = this.ColumnsHtml.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Select(u => u.Trim()).ToList(); //字段类型 List <string> columnsTypeList = this.ColumnsType.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select( u => { string conlumsType = u.Trim().ToLower(); //将传入的参数按程序中的类型进行转换 return(TypeHelper.TypeChangeDictionary.FirstOrDefault(r => conlumsType.Contains(r.Key)).Value); }).ToList(); if (columnsList.Count != columnsTypeList.Count || columnsList.Count != columnsNameList.Count) { throw new ArgumentException("字段之间个数不匹配!"); } //生成每个字段对应的中文名-类型-以及是否必填,是否Combobox等内容 List <TypeColumnName> typeNameList = new List <TypeColumnName>(); for (int i = 0; i < columnsList.Count; i++) { if (columnsList[i].Contains("$") && columnsList[i].Contains("#")) { throw new ArgumentException("无法同时上传图片和文件!"); } string columnName = columnsList[i].Replace("*", "").Replace("#", "").Replace("$", "").Replace("%", "").Replace("@", ""); //*是必填 //#是上传图片 //$是上传文件 //%是跨行 //@是下拉框 WebUploadColunm webuploadColunm; if (columnsList[i].Contains("#")) { webuploadColunm = new WebUploadColunm(true, columnName, UploadType.Img); } else if (columnsList[i].Contains("$")) { webuploadColunm = new WebUploadColunm(true, columnName, UploadType.File); } else { webuploadColunm = new WebUploadColunm(); } typeNameList.Add(new TypeColumnName() { ColumnName = columnName, AttrType = columnsTypeList[i], Comments = columnsNameList[i], IsRequired = columnsList[i].Contains("*") ? "1" : "0", DataLength = 100, IsCombobox = columnsList[i].Contains("@") ? true : false, IsColspan3 = columnsList[i].Contains("%") ? "1" : "0" }); } ViewFileModel vf = new ViewFileModel { CreateTime = DateTime.Now, EmailAddress = this.EmailAddress.Text, Author = this.UserName.Text, TableName = this.TableName.Text, ProjectName = this.ProjectName.Text, TypeColumnNames = typeNameList, IdType = _idType, TemplateFolder = @"..\..\Templates", OutputFolder = outputsFolder.Text ?? @"..\..\Outputs" }; var bussiness = new AddNewBussinessWpfHelper(vf); bussiness.Execute(); MessageBox.Show("操作成功!"); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
public AddNewBussinessWpfHelper(ViewFileModel viewFileModel) { this._parameter = new AddNewBussinessModel(viewFileModel.ProjectName, viewFileModel.TableName, viewFileModel.TemplateFolder); this._viewFileModel = viewFileModel; _baseUrl = viewFileModel.OutputFolder; }