Error executing template "Designs/Swift/Paragraph/Swift_Accordion.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_9ae30e8913134587b0b0436ea87b3f1c.Execute() in D:\dynamicweb.net\Solutions\twodayco3\twodayco3.swift.dwdemo.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_Accordion.cshtml:line 37
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.ParagraphViewModel>
2
3 @functions
4 {
5 private string RenderCustomCSS(IEnumerable<string> decorations)
6 {
7 var cssClasses = new List<string>();
8
9 foreach (var itemId in decorations)
10 {
11 var item = Dynamicweb.Content.Services.Items.GetItem("Swift_Css", itemId);
12 item.TryGetValue("Class", out object classes);
13
14 if (classes is null)
15 {
16 continue;
17 }
18
19 var cssString = (string)classes;
20
21 if (cssString.StartsWith("["))
22 {
23 var cssArray = Dynamicweb.Core.Converter.Deserialize<string[]>(cssString);
24 cssClasses.AddRange(cssArray);
25 }
26 else
27 {
28 cssClasses.Add(cssString.Replace(",", " "));
29 }
30 }
31
32 return string.Join(" ", cssClasses).Trim();
33 }
34 }
35
36 @{
37 string title = Model.Item.GetString("Title");
38 var accordionItems = Model.Item?.GetItems("Accordion_Items") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList();
39 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
40 var decorations = Model.Item?.GetList("CssDecorations")?.GetRawValue().OfType<string>() ?? Enumerable.Empty<string>();
41 string css = RenderCustomCSS(decorations);
42 string contentPadding = Model.Item.GetRawValueString("ContentPadding", "none");
43 contentPadding = contentPadding == "none" ? "p-0" : contentPadding;
44 contentPadding = contentPadding == "small" ? "p-3 p-md-3" : contentPadding;
45 contentPadding = contentPadding == "large" ? "p-5 p-md-5" : contentPadding;
46 }
47
48 <div class="accordion @(theme) @(css) @(contentPadding) h-100 position-relative item_@Model.Item.SystemName.ToLower()" id="accordion-@Pageview.CurrentParagraph.ID">
49 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && !Model.Item.GetBoolean("HideTitle"))
50 {
51 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "h2");
52 string headingLevel = Model.Item.GetString("HeadingLevel", "h2");
53 string headingLevelStart = $"<{headingLevel} class=\"{titleFontSize} mb-4\">";
54 string headingLevelStop = $"</{headingLevel}>";
55
56 @headingLevelStart
57 @Model.Item.GetString("Title")
58 @headingLevelStop
59 }
60 @foreach (var item in accordionItems)
61 {
62 <div class="accordion-item">
63 <h2 class="accordion-header" id="heading-@Pageview.CurrentParagraph.ID-@item.Id">
64 <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-@Pageview.CurrentParagraph.ID-@item.Id" aria-expanded="false" aria-controls="collapse-@Pageview.CurrentParagraph.ID-@item.Id">
65 @item.GetString("Title")
66 </button>
67 </h2>
68 <div id="collapse-@Pageview.CurrentParagraph.ID-@item.Id" class="accordion-collapse collapse" aria-labelledby="heading-@Pageview.CurrentParagraph.ID-@item.Id" data-bs-parent="#accordion-@Pageview.CurrentParagraph.ID">
69 <div class="accordion-body mb-0-last-child opacity-75">
70 @item.GetRawValueString("Content")
71 </div>
72 </div>
73 </div>
74 }
75 <div id="@Model.ID" class="user-select-none position-absolute top-0" style="scroll-margin-top:var(--header-height,150px)"></div>
76 </div>
77