Esempio n. 1
0
        public virtual IWriteResult WritePageArea(
            IRenderContext context,
            PageArea pageArea,
            Action <IRenderContext, object> onListItem,
            Func <IRenderContext, PageArea, IWriteResult> contentWriter)
        {
#if TRACE
            context.Trace(() => ToString() + " writing page " + Enum.GetName(typeof(PageArea), pageArea).ToLower());
#endif
            IWriteResult result;

            if (context.IncludeComments)
            {
                context.Html.WriteComment("region " + this.FullyQualifiedName());
            }

            if (pageArea == PageArea.Body)
            {
                WriteOpen(context.Html);
            }

            if (pageArea == PageArea.Body && !ReferenceEquals(_repeatType, null))
            {
                result = WriteResult.Continue();

#if TRACE
                context.Trace(() => ToString() + " getting " + (string.IsNullOrEmpty(ListScope) ? "" : ListScope + " ") + _listType.DisplayName(TypeExtensions.NamespaceOption.None) + " from " + context.Data);
#endif
                var list = context.Data.Get(_listType, ListScope) as IEnumerable;
                if (!ReferenceEquals(list, null))
                {
                    foreach (var item in list)
                    {
#if TRACE
                        context.Trace(() => ToString() + " setting next " + (string.IsNullOrEmpty(RepeatScope) ? "" : RepeatScope + " ") + _repeatType.DisplayName(TypeExtensions.NamespaceOption.None) + " in " + context.Data + " " + item);
#endif

                        context.Data.Set(_repeatType, item, RepeatScope);

                        if (!ReferenceEquals(onListItem, null))
                        {
                            onListItem(context, item);
                        }

                        context.TraceIndent();

                        WriteChildOpen(context.Html);
                        result.Add(contentWriter(context, pageArea));
                        WriteChildClose(context.Html);

                        context.TraceOutdent();
                    }
                }
#if TRACE
                else
                {
                    context.Trace(() => ToString() + " will not repeat because there is no list in the data context of the required type");
                }
#endif
            }
            else
            {
                result = contentWriter(context, pageArea);
            }

            if (pageArea == PageArea.Body)
            {
                WriteClose(context.Html);
            }

            _assetDeploymentMixin.WritePageArea(context, pageArea);

            return(result);
        }
Esempio n. 2
0
        public virtual IWriteResult WritePageArea(
            IRenderContext context,
            PageArea pageArea)
        {
            if (pageArea == PageArea.Head)
            {
                if (_headWriters != null && _headWriters.Length > 0)
                {
                    if (context.IncludeComments)
                    {
                        context.Html.WriteComment(GetCommentName());
                    }

                    for (var i = 0; i < _headWriters.Length; i++)
                    {
                        _headWriters[i](context);
                    }
                }
            }

            if (pageArea == PageArea.Scripts)
            {
                if (_scriptWriters != null && _scriptWriters.Length > 0)
                {
                    if (context.IncludeComments)
                    {
                        context.Html.WriteComment(GetCommentName());
                    }

                    for (var i = 0; i < _scriptWriters.Length; i++)
                    {
                        _scriptWriters[i](context);
                    }
                }
            }

            if (pageArea == PageArea.Styles)
            {
                if (_styleWriters != null && _styleWriters.Length > 0)
                {
                    if (context.IncludeComments)
                    {
                        context.Html.WriteComment(GetCommentName());
                    }

                    for (var i = 0; i < _styleWriters.Length; i++)
                    {
                        _styleWriters[i](context);
                    }
                }
            }

            if (pageArea == PageArea.Body)
            {
                if (_bodyWriters != null && _bodyWriters.Length > 0)
                {
                    if (context.IncludeComments)
                    {
                        context.Html.WriteComment(GetCommentName());
                    }

                    for (var i = 0; i < _bodyWriters.Length; i++)
                    {
                        _bodyWriters[i](context);
                    }
                }
            }

            if (pageArea == PageArea.Initialization)
            {
                if (_initializationWriters != null && _initializationWriters.Length > 0)
                {
                    if (context.IncludeComments)
                    {
                        context.Html.WriteComment(GetCommentName());
                    }

                    for (var i = 0; i < _initializationWriters.Length; i++)
                    {
                        _initializationWriters[i](context);
                    }
                }
            }

            _assetDeploymentMixin.WritePageArea(context, pageArea);

            return(WriteResult.Continue());
        }