Пример #1
0
        public string RenderLayout(RazorEngineCompiledTemplate <LayoutTemplateBase> compiledLayout, object model)
        {
            return(compiledLayout.Run(instance =>
            {
                if (!(model is AnonymousTypeWrapper))
                {
                    model = new AnonymousTypeWrapper(model);
                }

                instance.Model = model;
            }));
        }
Пример #2
0
        public RenderedTemplate Render(RazorEngineCompiledTemplate <IncludeTemplateBase> compiledTemplate,
                                       IDictionary <string, RazorEngineCompiledTemplate <IncludeTemplateBase> > compiledIncludes, object model)
        {
            List <string> usedIncludes   = new List <string>();
            string        templateLayout = string.Empty;
            Dictionary <string, dynamic> templateViewData = new Dictionary <string, dynamic>();
            string templateOutput = compiledTemplate.Run(instance =>
            {
                if (!(model is AnonymousTypeWrapper))
                {
                    model = new AnonymousTypeWrapper(model);
                }

                instance.Model           = model;
                instance.IncludeCallback = (key, includeModel) =>
                {
                    usedIncludes.Add(key);
                    RenderedTemplate renderedTemplate = Render(compiledIncludes[key], compiledIncludes, includeModel);
                    renderedTemplate.ViewData.ToList().ForEach(item => { templateViewData[item.Key] = item.Value; });
                    return(renderedTemplate.HtmlContents);
                };
                instance.LayoutCallback = key =>
                {
                    templateLayout = key;
                };
                instance.ViewData.Callback = newViewData =>
                {
                    templateViewData = newViewData;
                };
            });

            return(new RenderedTemplate
            {
                HtmlContents = templateOutput,
                ComponentDependencies = usedIncludes,
                Layout = templateLayout,
                ViewData = templateViewData
            });
        }