示例#1
0
        private string renderTemplate(IRazorTemplate template, params IRazorTemplate[] templates)
        {
            var descriptor = new ViewDescriptor<IRazorTemplate>(template);
            var current = descriptor;
            for (var i = 0; i < templates.Length; ++i)
            {
                var layoutTemplate = templates[i];
                var layout = new ViewDescriptor<IRazorTemplate>(layoutTemplate);
                layoutTemplate.Descriptor = layout;
                current.Master = templates[i];
                current = layout;
            }

            var modifier = new ViewModifierService<IFubuRazorView>(Enumerable.Empty<IViewModifier<IFubuRazorView>>());
            var viewFactory = new ViewFactory(descriptor, _templateService, modifier);
            var view = (IFubuRazorView)viewFactory.GetView();
            view.ServiceLocator = _serviceLocator;
            view.RenderPartialWith = name =>
            {
                var partialTemplate = _sharedTemplateLocator.LocatePartial(name, view.OriginTemplate);
                partialTemplate.Descriptor = new ViewDescriptor<IRazorTemplate>(partialTemplate);
                var partialView =
                    _templateService.GetView(partialTemplate.Descriptor.As<ViewDescriptor<IRazorTemplate>>());

                var partialRendered = partialView.Run(new ExecuteContext());
                return new TemplateWriter(x => x.Write(partialRendered));
            };
            return view.Run(new ExecuteContext());
        }
        private string renderTemplate(IRazorTemplate template, params IRazorTemplate[] templates)
        {
            var descriptor = new ViewDescriptor<IRazorTemplate>(template);
            var current = descriptor;
            for (var i = 0; i < templates.Length; ++i)
            {
                var layoutTemplate = templates[i];
                var layout = new ViewDescriptor<IRazorTemplate>(layoutTemplate);
                layoutTemplate.Descriptor = layout;
                current.Master = templates[i];
                current = layout;
            }

            var modifier = new ViewModifierService<IFubuRazorView>(Enumerable.Empty<IViewModifier<IFubuRazorView>>());
            var viewFactory = new ViewFactory(descriptor, _templateFactory, modifier);
            var view = (IFubuRazorView)viewFactory.GetView();
            view.ServiceLocator = _serviceLocator;
            view.As<IRenderableView>().Render();
            return view.Result.ToString();
        }