Example #1
0
        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
        }
Example #2
0
        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;
            }
        }