protected ViewGeneratorTemplateModel GetViewGeneratorTemplateModel(ViewGeneratorModel viewGeneratorModel, ModelTypeAndContextModel modelTypeAndContextModel) { bool isLayoutSelected = !viewGeneratorModel.PartialView && (viewGeneratorModel.UseDefaultLayout || !String.IsNullOrEmpty(viewGeneratorModel.LayoutPage)); ViewGeneratorTemplateModel templateModel = new ViewGeneratorTemplateModel() { ViewDataTypeName = modelTypeAndContextModel?.ModelType?.FullName, ViewDataTypeShortName = modelTypeAndContextModel?.ModelType?.Name, ViewName = viewGeneratorModel.ViewName, LayoutPageFile = viewGeneratorModel.LayoutPage, IsLayoutPageSelected = isLayoutSelected, IsPartialView = viewGeneratorModel.PartialView, ReferenceScriptLibraries = viewGeneratorModel.ReferenceScriptLibraries, ModelMetadata = modelTypeAndContextModel?.ContextProcessingResult?.ModelMetadata, JQueryVersion = "1.10.2" //Todo }; return(templateModel); }
public async Task GenerateCode(ViewGeneratorModel viewGeneratorModel) { if (viewGeneratorModel == null) { throw new ArgumentNullException(nameof(viewGeneratorModel)); } if (string.IsNullOrEmpty(viewGeneratorModel.ViewName)) { throw new ArgumentException(MessageStrings.ViewNameRequired); } if (string.IsNullOrEmpty(viewGeneratorModel.TemplateName)) { throw new ArgumentException(MessageStrings.TemplateNameRequired); } ModelTypeAndContextModel modelTypeAndContextModel; var outputPath = ValidateAndGetOutputPath(viewGeneratorModel, outputFileName: viewGeneratorModel.ViewName + Constants.ViewExtension); if (string.IsNullOrEmpty(viewGeneratorModel.DataContextClass)) { modelTypeAndContextModel = await ValidateModelAndGetCodeModelMetadata(viewGeneratorModel); } else { modelTypeAndContextModel = await ValidateModelAndGetMetadata(viewGeneratorModel); } var layoutDependencyInstaller = ActivatorUtilities.CreateInstance <MvcLayoutDependencyInstaller>(_serviceProvider); await layoutDependencyInstaller.Execute(); if (viewGeneratorModel.ViewName.EndsWith(Constants.ViewExtension, StringComparison.OrdinalIgnoreCase)) { int viewNameLength = viewGeneratorModel.ViewName.Length - Constants.ViewExtension.Length; viewGeneratorModel.ViewName = viewGeneratorModel.ViewName.Substring(0, viewNameLength); } bool isLayoutSelected = !viewGeneratorModel.PartialView && (viewGeneratorModel.UseDefaultLayout || !String.IsNullOrEmpty(viewGeneratorModel.LayoutPage)); var templateModel = new ViewGeneratorTemplateModel() { ViewDataTypeName = modelTypeAndContextModel.ModelType.FullName, ViewDataTypeShortName = modelTypeAndContextModel.ModelType.Name, ViewName = viewGeneratorModel.ViewName, LayoutPageFile = viewGeneratorModel.LayoutPage, IsLayoutPageSelected = isLayoutSelected, IsPartialView = viewGeneratorModel.PartialView, ReferenceScriptLibraries = viewGeneratorModel.ReferenceScriptLibraries, ModelMetadata = modelTypeAndContextModel.ContextProcessingResult.ModelMetadata, JQueryVersion = "1.10.2" //Todo }; var templateName = viewGeneratorModel.TemplateName + Constants.RazorTemplateExtension; await _codeGeneratorActionsService.AddFileFromTemplateAsync(outputPath, templateName, TemplateFolders, templateModel); _logger.LogMessage("Added View : " + outputPath.Substring(ApplicationInfo.ApplicationBasePath.Length)); await layoutDependencyInstaller.InstallDependencies(); if (modelTypeAndContextModel.ContextProcessingResult.ContextProcessingStatus == ContextProcessingStatus.ContextAddedButRequiresConfig) { throw new Exception(string.Format("{0} {1}", MessageStrings.ScaffoldingSuccessful_unregistered, MessageStrings.Scaffolding_additionalSteps)); } }