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 }
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)); }
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)); }
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(); }
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); }
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); }
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)); } }