コード例 #1
0
        public string Render(List <LogItem> logs, string title)
        {
            RazorModel model = new RazorModel
            {
                CaptureDate   = DateTime.UtcNow,
                TotalDuration = logs.Count == 0 ? TimeSpan.MinValue : logs.Last().ServerTime - logs.First().ServerTime,
                Title         = title,
                Logs          = logs,
                RequestsCount = logs.Count(l => l is HttpRequestLog)
            };

#if NET452
            RazorEngine <RazorTemplateBase> engine = new RazorEngine <RazorTemplateBase>();
            engine.AddAssembly("System.Web.dll");

            string html = engine.RenderTemplate(Resources.HtmlLogTemplate, model);
            return(html ?? engine.ErrorMessage);
#else
            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseMemoryCachingProvider()
                         .Build();

            return(engine.CompileRenderAsync("HtmlLog", Resources.HtmlLogTemplateNetStandard, model).Result);
#endif
        }
コード例 #2
0
ファイル: Page.cs プロジェクト: kjmtks/LMS7
        private async Task <string> preprocessAsync(string source, ALMS.App.Models.Entities.User user)
        {
            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseEmbeddedResourcesProject(typeof(Dummy))
                         .UseMemoryCachingProvider()
                         .Build();
            var           commitInfo = Lecture.LectureContentsRepositoryPair.ReadCommitInfo($"pages/{Path}", Branch);
            dynamic       viewbag    = new System.Dynamic.ExpandoObject();
            var           model      = new PageModel(Lecture, user, commitInfo, Path, Branch, viewbag);
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine($"@model {model.GetType().FullName}");
            sb.AppendLine("@{ DisableEncoding = true; }");
            sb.AppendLine("<div>");
            sb.AppendLine("");
            sb.Append(source);
            sb.AppendLine("");
            sb.AppendLine("</div>");

            var x = viewbag as IDictionary <string, Object>;

            foreach (var p in Lecture.GetParameters().GetValues())
            {
                x.Add(p.Name, p.GetValue());
            }
            return(await engine.CompileRenderStringAsync($"{Lecture.DirectoryPath}/contents/pages/{Path}:{Branch}", sb.ToString(), model, viewbag));
        }
コード例 #3
0
        async Task <string> ParseAsync <T>(string template, T model)
        {
            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseEmbeddedResourcesProject(typeof(BaseService))
                         .UseMemoryCachingProvider()
                         .Build();

            return(await engine.CompileRenderAsync <T>(Guid.NewGuid().ToString(), template, model));
        }
コード例 #4
0
        public DumbController()
        {
            // this is a stupid example of razor rendering, razor light is a limited tool in beta, but for the sake of example
            // if you have to use your own razor builder, a good example to follow would be: https://scottsauber.com/2018/07/07/walkthrough-creating-an-html-email-template-with-razor-and-razor-class-libraries-and-rendering-it-from-a-net-standard-class-library/
            // or any other google search for custom  razor builder
            var builder = new RazorLight.RazorLightEngineBuilder();

            builder.UseMemoryCachingProvider();
            dynamic viewBag = new ExpandoObject();

            ViewBag = viewBag;
            Engine  = builder.Build();
        }
コード例 #5
0
        public string Render(List <LogItem> logs, string title)
        {
            RazorModel model = new RazorModel
            {
                CaptureDate   = DateTime.UtcNow,
                TotalDuration = logs.Count == 0 ? TimeSpan.MinValue : logs.Last().ServerTime - logs.First().ServerTime,
                Title         = title,
                Logs          = logs,
                RequestsCount = logs.Count(l => l is HttpRequestLog)
            };

            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseMemoryCachingProvider()
                         .Build();

            return(engine.CompileRenderAsync("HtmlLog", Resources.HtmlLogTemplate, model).Result);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: chino-os/chino-os
        private static async Task OnRender(RenderOptions options)
        {
            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseMemoryCachingProvider()
                         .UseFileSystemProject(Path.GetDirectoryName(options.Template), ".razor")
                         .Build();
            var boards   = GetBoardDefinitions();
            var chips    = GetChipDefinitions();
            var drivers  = GetDriverDefinitions();
            var board    = boards.FirstOrDefault(x => x.Id == options.Board) ?? throw new InvalidOperationException($"Cannot find board definition for {options.Board}");
            var chip     = chips.FirstOrDefault(x => x.Id == board.Chip) ?? throw new InvalidOperationException($"Cannot find chip definition for {board.Chip}");
            var bdrivers = board.Drivers.Select(x => drivers.First(d => d.Id == x)).ToList();
            var context  = new TemplateRenderContext {
                Chip = chip, Board = board, Drivers = bdrivers
            };
            var result = await engine.CompileRenderAsync(Path.GetFileName(options.Template), context);

            File.WriteAllText(options.Out, result);
        }
コード例 #7
0
ファイル: ActivityParser.cs プロジェクト: kjmtks/LMS7
        public static async Task <Activity> BuildActivityAsync(Entities.Lecture lecture, string activity_filename, Entities.User user, IDictionary <string, string> args, string current_page_path, string branch)
        {
            var text = lecture.ReadActivityFile(activity_filename, branch);

            var engine = new RazorLight.RazorLightEngineBuilder()
                         .UseEmbeddedResourcesProject(typeof(Dummy))
                         .UseMemoryCachingProvider()
                         .Build();
            var           commitInfo = lecture.LectureContentsRepositoryPair.ReadCommitInfo($"activities/{activity_filename}", branch);
            dynamic       viewbag    = new System.Dynamic.ExpandoObject();
            var           model      = new PageModel(lecture, user, commitInfo, current_page_path, branch, viewbag);
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine($"@model {model.GetType().FullName}");
            sb.AppendLine("@{ DisableEncoding = true; }");
            sb.Append(text);

            var x = viewbag as IDictionary <string, Object>;

            foreach (var p in lecture.GetParameters().GetValues())
            {
                x.Add(p.Name, p.GetValue());
            }
            foreach (var p in args)
            {
                x.Add(p.Key, p.Value);
            }

            var xml = await engine.CompileRenderStringAsync($"{lecture.DirectoryPath}/contents/activities/{activity_filename}:{branch}", sb.ToString(), model, viewbag);

            XmlSchemaSet set = new XmlSchemaSet();

            set.Add("urn:activity-schema", $"ActivitySchema.xsd");
            XmlSchema schema = null;

            foreach (XmlSchema s in set.Schemas("urn:activity-schema"))
            {
                schema = s;
            }

            XmlDocument xdoc = new XmlDocument();

            xdoc.Schemas.Add(schema);
            xdoc.LoadXml(xml);
            var sb2 = new System.Text.StringBuilder();

            xdoc.Validate((sender, args) => {
                if (args.Severity == XmlSeverityType.Error)
                {
                    sb2.AppendLine("Error: " + args.Message);
                }
            });
            var validateResult = sb2.ToString().TrimEnd();

            if (validateResult != string.Empty)
            {
                throw new FormatException(validateResult);
            }
            System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Activity));
            using (var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml)))
            {
                return((Activity)serializer.Deserialize(ms));
            }
        }