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); }
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()); }