Example #1
0
        protected virtual void RenderWithXslt(HtmlTextWriter writer)
        {
            // Get the model first to check if it's available
            var model = GetModel();

            if (String.IsNullOrEmpty(Renderer))
            {
                throw new InvalidOperationException("Renderer property is empty.");
            }

            var xsltTransform = PinnedXsltContext ?? Xslt.GetXslt(Renderer, false);
            var xsltArguments = GetXsltArgumentList();

            var             timer   = Stopwatch.StartNew();
            IXPathNavigable xml     = null;
            bool            withNav = false;

            PrepareXsltRendering(model);
            var contentModel = model as SenseNet.ContentRepository.Content;

            if (contentModel != null && SenseNet.ContentRepository.Content.ContentNavigatorEnabled)
            {
                withNav = true;
                xml     = new SenseNet.ContentRepository.Xpath.NavigableContent(contentModel);
            }
            else
            {
                xml = GetXmlModel(model);
                if (xml == null)
                {
                    xml = GetXmlModel(SerializeModel(model));
                }
                if (xml == null)
                {
                    throw new InvalidOperationException("Serialized model is of unknown type");
                }
            }
            xsltTransform.Transform(xml, xsltArguments, writer);
            timer.Stop();
            Debug.WriteLine(String.Format("#xslt> Rendering time with {0}: {1} ms ({2} ticks)", withNav ? "ContentNavigator" : "serialization", timer.ElapsedMilliseconds, timer.ElapsedTicks));
        }
Example #2
0
        protected virtual void RenderWithXslt(HtmlTextWriter writer)
        {
            // Get the model first to check if it's available
            var model = GetModel();

            if (String.IsNullOrEmpty(Renderer))
                throw new InvalidOperationException("Renderer property is empty.");

            var xsltTransform = PinnedXsltContext ?? Xslt.GetXslt(Renderer, false);
            var xsltArguments = GetXsltArgumentList();

            var timer = Stopwatch.StartNew();
            IXPathNavigable xml = null;
            bool withNav = false;

            PrepareXsltRendering(model);
            var contentModel = model as SenseNet.ContentRepository.Content;
            if (contentModel != null && SenseNet.ContentRepository.Content.ContentNavigatorEnabled)
            {
                withNav = true;
                xml = new SenseNet.ContentRepository.Xpath.NavigableContent(contentModel);
            }
            else
            {
                xml = GetXmlModel(model);
                if (xml == null)
                    xml = GetXmlModel(SerializeModel(model));
                if (xml == null)
                    throw new InvalidOperationException("Serialized model is of unknown type");
            }
            xsltTransform.Transform(xml, xsltArguments, writer);
            timer.Stop();
            Debug.WriteLine(String.Format("#xslt> Rendering time with {0}: {1} ms ({2} ticks)", withNav ? "ContentNavigator" : "serialization", timer.ElapsedMilliseconds, timer.ElapsedTicks));
        }