• Brand-independent pump advice
  • + 30 years of experience
  • Official dealer of top brands
  • Just in time deliveries
Error executing template "/Designs/IPG_generated/Grid/AdvancedGrid/RowTemplates/AdvancedGridConfiguration.cshtml"
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
   at CompiledRazorTemplates.Dynamic.RazorEngine_05f6fc5162b346afaf93dc506a07399f.Execute() in D:\dynamicweb.net\Solutions\IPG\Production\files\Templates\Designs\IPG_generated\Grid\AdvancedGrid\RowTemplates\AdvancedGridConfiguration.cshtml:line 130
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 2 @using Dynamicweb; 3 @using Dynamicweb.Content 4 @using Dynamicweb.Content.Items; 5 6 @using Dynamicweb.Frontend 7 @using Bluedesk.DynamicWeb.ItemTypes; 8 9 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 10 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 11 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 12 @using Bluedesk.DynamicWeb.ItemTypes.Extensions; 13 14 @using System.Runtime.Caching; 15 16 @{ 17 var rowID = Model.Item.Id; 18 // var paragraphID = Pageview.CurrentParagraph.ID; 19 AdvancedGridConfiguration _data = new AdvancedGridConfiguration(); 20 21 int CacheTime = 5; 22 MemoryCache memCache = MemoryCache.Default; 23 string cacheKey = $"AdvancedGridConfiguration_{rowID}-{Pageview.AreaID}"; 24 25 if (Pageview.IsVisualEditorMode) 26 { 27 var cache = MemoryCache.Default; 28 memCache.Remove($"AdvancedGridConfiguration_{rowID}-{Pageview.AreaID}"); 29 } 30 31 if (memCache.Contains(cacheKey)) 32 { 33 _data = memCache.Get(cacheKey) as AdvancedGridConfiguration; 34 35 if (_data == null) 36 { 37 _data = Dynamicweb.Content.Services.Items.GetItem("AdvancedGridConfiguration", rowID.ToString()).ToCodeFirstItem<AdvancedGridConfiguration>() ?? new AdvancedGridConfiguration(); 38 memCache.Set(cacheKey, _data, DateTimeOffset.UtcNow.AddMinutes(CacheTime)); 39 40 } 41 42 } 43 else 44 { 45 _data = Dynamicweb.Content.Services.Items.GetItem("AdvancedGridConfiguration", rowID.ToString()).ToCodeFirstItem<AdvancedGridConfiguration>() ?? new AdvancedGridConfiguration(); 46 memCache.Set(cacheKey, _data, DateTimeOffset.UtcNow.AddMinutes(CacheTime)); 47 } 48 49 string GridTemplate = _data.GetGridTemplate(); 50 string height = !string.IsNullOrWhiteSpace(_data.Height.ToString()) ? _data.Height.ToString() + "px" : "none"; 51 52 string ContentAlignment = _data.ContentAlignment; 53 54 string VerticalAlign = "center"; 55 string HorizontalAlign = "center"; 56 57 } 58 59 60 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 61 @using Dynamicweb; 62 @using Dynamicweb.Frontend 63 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 64 65 @helper RenderButton(AdvancedGridButton button, PageView Pageview) 66 { 67 string Template = button.GetAdvancedButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview)); 68 69 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview))) 70 { 71 @Template; 72 } 73 } 74 75 76 @{ 77 Dictionary<string, string> GridAlignment = _data.GetContentAlignMent(ContentAlignment); 78 } 79 80 @{ 81 82 var template = new System.Text.StringBuilder(); 83 var stylesheet = new System.Text.StringBuilder(); 84 85 if (!int.TryParse(Dynamicweb.Context.Current?.Request?.Params?["AreaId"], out int areaid)) 86 { 87 int.TryParse(Dynamicweb.Context.Current?.Request?.Params?["PageID"], out int pageid); 88 if (pageid == 0) 89 { 90 int.TryParse(Dynamicweb.Context.Current?.Request?.Params?["ID"], out pageid); 91 } 92 if (pageid == 0) 93 { 94 pageid = Dynamicweb.Frontend.PageView.Current()?.ID ?? 1; 95 } 96 97 areaid = Dynamicweb.Content.Services.Pages.GetPage(pageid == 0 ? 1 : pageid)?.AreaId ?? 0; 98 } 99 100 //int areaid = 1; 101 102 string BackgroundColor = _data.BackgroundColor.GetColorCode(areaid) ?? ""; 103 string BackgroundImage = !string.IsNullOrWhiteSpace(_data.BackgroundImage) ? _data.BackgroundImage : ""; 104 string Header = _data.Header().HeaderFormatted("AdvancedGrid__header"); 105 string SubHeader = _data.SubHeader().HeaderFormatted("AdvancedGrid__subheader"); 106 107 int RowCounter = 0; 108 109 stylesheet.AppendLine(".AdvancedGrid__container--" + _data.Id + "{"); 110 // stylesheet.AppendLine("--BackgroundColor: " + BackgroundColor + ";"); 111 if (!string.IsNullOrWhiteSpace(BackgroundImage)) 112 { 113 stylesheet.AppendLine("--BackgroundImage: url('" + BackgroundImage + "');"); 114 } 115 stylesheet.AppendLine("}"); 116 117 if (!string.IsNullOrWhiteSpace(Header) || !string.IsNullOrWhiteSpace(SubHeader)) 118 { 119 120 template.AppendLine("<header class='AdvancedGrid__header-container'>"); 121 122 if (!string.IsNullOrWhiteSpace(Header)) { template.AppendLine(Header); } 123 if (!string.IsNullOrWhiteSpace(SubHeader)) { template.AppendLine(SubHeader); } 124 125 template.AppendLine("</header>"); 126 } 127 128 template.AppendLine("<article class='AdvancedGrid__container AdvancedGrid__container--" + _data.Id + "'>"); 129 130 foreach (ColumnConfigurationItem ColumnConfiguration in _data.ColumnConfiguration()) 131 { 132 133 string columnBackgroundColor = ColumnConfiguration.ColumnBackgroundColor?.GetColorCode(Pageview.AreaID) ?? "transparent"; 134 string columnFlexGrow = ColumnConfiguration.ColumnFlexGrow.ToString(); 135 string columnFlexBasis = ColumnConfiguration.ColumnFlexBasis.ToString(); 136 string columnFlexSchrink = ColumnConfiguration.ColumnFlexSchrink.ToString(); 137 string columnClass = ColumnConfiguration.CssClass?.ToString() ?? ""; 138 139 string columnPadding = ColumnConfiguration.ColumnPadding?.ToString() ?? ""; 140 141 string columnWidth = ColumnConfiguration.ColumnWidth == 0 ? "none" : ColumnConfiguration.ColumnWidth + "px;"; 142 string columnWidthClass = ColumnConfiguration.ColumnWidth != 0 ? ColumnConfiguration.ColumnWidthMinMax + "-width : " + ColumnConfiguration.ColumnWidth + "px;" : ""; 143 144 template.AppendLine("<section class='AdvancedGrid__column AdvancedGrid__column--" + ColumnConfiguration.Id + " " + columnClass + "' style='padding: var(--Padding);'>"); 145 146 stylesheet.AppendLine(".AdvancedGrid__column--" + ColumnConfiguration.Id + "{"); 147 stylesheet.AppendLine("--BackgroundColor: " + columnBackgroundColor + ";"); 148 stylesheet.AppendLine("--FlexGrow: " + columnFlexGrow + ";"); 149 stylesheet.AppendLine("--FlexBasis: " + columnFlexBasis + ";"); 150 stylesheet.AppendLine("--FlexSchrink: " + columnFlexSchrink + ";"); 151 stylesheet.AppendLine("--Width: " + columnWidth + ";"); 152 stylesheet.AppendLine("--Padding: " + columnPadding + ";"); 153 stylesheet.AppendLine(columnWidthClass); 154 stylesheet.AppendLine("}"); 155 156 foreach (RowConfigurationItem RowConfiguration in ColumnConfiguration.RowConfiguration()) 157 { 158 string rowBackgroundColor = RowConfiguration.BackgroundColor?.GetColorCode(areaid) ?? "transparent"; 159 string rowHeightClass = RowConfiguration.Height != 0 ? RowConfiguration.HeightMinMax + "-height : " + RowConfiguration.Height + "px;" : ""; 160 string rowClass = RowConfiguration.CssClass?.ToString() ?? ""; 161 // Dictionary<string, string> RowElementAlignment = GetContentAlignMent(RowConfiguration.ContentAlignment); 162 163 RowCounter++; 164 165 template.AppendLine($"<div class='AdvancedGrid__row AdvancedGrid__row--{RowConfiguration.Id} {rowClass}'>{Model.Column(RowCounter).Output()}</div>"); 166 167 stylesheet.AppendLine(".AdvancedGrid__row--" + RowConfiguration.Id + "{"); 168 stylesheet.AppendLine("--BackgroundColor: " + rowBackgroundColor + ";"); 169 // stylesheet.AppendLine("--VerticalAlign: " + RowElementAlignment["VerticalAlign"] + ";"); 170 // stylesheet.AppendLine("--HorinzontalAlign: " + RowElementAlignment["HorizontalAlign"] + ";"); 171 stylesheet.AppendLine(rowHeightClass); 172 stylesheet.AppendLine("}"); 173 } 174 175 template.AppendLine("</section>"); 176 177 } 178 179 template.AppendLine("</article>"); 180 181 } 182 183 <section class="AdvancedGrid AdvancedGrid--@rowID @_data.CssClass" style="--Height: @height;"> 184 185 @template.ToString() 186 <!--// Generate Buttons //--> 187 188 @if (!string.IsNullOrWhiteSpace(_data.Button().GetLink(Pageview)) && !string.IsNullOrWhiteSpace(_data.Button().ButtonText)) 189 { 190 <section class="AdvancedGrid__navigation"> 191 <nav class="cta-paragraph__btn-navigation"> 192 @RenderButton(_data.Button(), Pageview) 193 @RenderButton(_data.ExtraButton(), Pageview) 194 </nav> 195 </section> 196 } 197 198 <style> 199 @stylesheet.ToString() 200 </style> 201 202 <style> 203 .AdvancedGrid--@rowID .AdvancedGrid__row { 204 205 --VerticalAlign: @GridAlignment["VerticalAlign"]; 206 --HorinzontalAlign: @GridAlignment["HorizontalAlign"]; 207 208 align-items: var(--VerticalAlign); 209 justify-content: var(--HorinzontalAlign); 210 211 } 212 213 .AdvancedGrid__container--@rowID{ 214 --BackgroundImage: url('@_data.BackgroundImage'); 215 --BackgroundColor: @_data.BackgroundColor.GetColorCode(Pageview.AreaID); 216 } 217 218 .AdvancedGrid__column { 219 background-color: var(--BackgroundColor); 220 221 flex-grow: var(--FlexGrow); 222 flex-basis: var(--FlexBasis); 223 flex-shrink: var(--FlexSchrink); 224 225 width: var(--Width); 226 padding: var(--Padding); 227 } 228 229 .AdvancedGrid__container--{ 230 background-color: transparent; 231 background-image: none; 232 } 233 234 </style> 235 236 </section> 237
To Top