示例#1
0
        public override ComponentParts Write(Component component, Page page)
        {
            var element   = component as Element;
            var parts     = new ComponentParts();
            var endpoints = new List <Endpoint>();

            if (element.JavaScriptPath != null)
            {
                parts.ElementScripts.Add(element.JavaScriptId.Value, element.JavaScriptPath);
            }

            if (element.Events != null)
            {
                foreach (var eventHandler in element.Events)
                {
                    var endpoint = eventHandler.Callback;
                    endpoint.Page = page;
                    endpoint.Name = element.Id + eventHandler.Event;
                    endpoints.Add(endpoint);
                }
            }

            if (element.Callback != null)
            {
                element.Callback.Name = element.Id;
                endpoints.Add(element.Callback);
            }

            parts.Endpoints = endpoints;

            if (element.Content != null)
            {
                foreach (var child in element.Content.OfType <Component>())
                {
                    var writer = _factory.GetWriter(child);
                    if (writer != null)
                    {
                        var moreParts = writer.Write(child, page);
                        parts.Combine(moreParts);
                    }
                }
            }


            return(parts);
        }
 private ComponentParts WriteComponent(ComponentWriterFactory factory, Component component, Page page)
 {
     return(factory.GetWriter(component).Write(component, page));
 }