Home
News
Copy of BLOG: Leidingspanning - Vijand voor pompsystemen
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