private string InitWebpage() { if (string.IsNullOrEmpty(TemplatePath)) { return(null); } var dynCode = new MvcDynamicCode().Init(Block, 10, Log); var compiler = Eav.Factory.Resolve <IRenderRazor>(); var result = compiler.RenderToStringAsync(TemplatePath, new Object(), rzv => { if (rzv.RazorPage is IIsSxcRazorPage asSxc) { asSxc.DynCode = dynCode; asSxc.VirtualPath = TemplatePath; asSxc.Purpose = Purpose; } }); // todo: de-async! return(result.Result); // WIP https://github.com/dotnet/aspnetcore/blob/master/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs#L397-L404 // maybe also https://stackoverflow.com/questions/48206993/how-to-load-asp-net-core-razor-view-dynamically-at-runtime // later also check loading more DLLs on https://stackoverflow.com/questions/58685966/adding-assemblies-types-to-be-made-available-to-razor-page-at-runtime }
public async Task <TextWriter> RenderTask() { Log.Add("will render into TextWriter"); try { if (string.IsNullOrEmpty(TemplatePath)) { return(null); } var dynCode = new MvcDynamicCode().Init(Block, 10, Log); var compiler = Eav.Factory.Resolve <IRenderRazor>(); var result = await compiler.RenderToStringAsync(TemplatePath, new Object(), rzv => { if (rzv.RazorPage is IIsSxcRazorPage asSxc) { asSxc.DynCode = dynCode; asSxc.VirtualPath = TemplatePath; asSxc.Purpose = Purpose; } }); var writer = new StringWriter(); writer.Write(result); // todo: continue here 2020-08-19 return(writer); } catch (Exception maybeIEntityCast) { Sxc.Code.ErrorHelp.AddHelpIfKnownError(maybeIEntityCast); throw; } }