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_99ef8e0ce675467cb789c78e6c67d453.ExecuteAsync()
at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
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>
@functions
{
private string RenderCustomCSS(IEnumerable<string> decorations)
{
var cssClasses = new List<string>();
foreach (var itemId in decorations)
{
var item = Dynamicweb.Content.Services.Items.GetItem("Swift_Css", itemId);
item.TryGetValue("Class", out object classes);
if (classes is null)
{
continue;
}
var cssString = (string)classes;
if (cssString.StartsWith("["))
{
var cssArray = Dynamicweb.Core.Converter.Deserialize<string[]>(cssString);
cssClasses.AddRange(cssArray);
}
else
{
cssClasses.Add(cssString.Replace(",", " "));
}
}
return string.Join(" ", cssClasses).Trim();
}
}
@{
string title = Model.Item.GetString("Title");
var accordionItems = Model.Item?.GetItems("Accordion_Items") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList();
string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
var decorations = Model.Item?.GetList("CssDecorations")?.GetRawValue().OfType<string>() ?? Enumerable.Empty<string>();
string css = RenderCustomCSS(decorations);
string contentPadding = Model.Item.GetRawValueString("ContentPadding", "none");
contentPadding = contentPadding == "none" ? "p-0" : contentPadding;
contentPadding = contentPadding == "small" ? "p-3 p-md-3" : contentPadding;
contentPadding = contentPadding == "large" ? "p-5 p-md-5" : contentPadding;
}
<div class="accordion @(theme) @(css) @(contentPadding) h-100 position-relative item_@Model.Item.SystemName.ToLower()" id="accordion-@Pageview.CurrentParagraph.ID">
@if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && !Model.Item.GetBoolean("HideTitle"))
{
string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "h2");
string headingLevel = Model.Item.GetString("HeadingLevel", "h2");
string headingLevelStart = $"<{headingLevel} class=\"{titleFontSize} mb-4\">";
string headingLevelStop = $"</{headingLevel}>";
@headingLevelStart
@Model.Item.GetString("Title")
@headingLevelStop
}
@foreach (var item in accordionItems)
{
<div class="accordion-item">
<h2 class="accordion-header" id="heading-@Pageview.CurrentParagraph.ID-@item.Id">
<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">
@item.GetString("Title")
</button>
</h2>
<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">
<div class="accordion-body mb-0-last-child opacity-75">
@item.GetRawValueString("Content")
</div>
</div>
</div>
}
<div id="@Model.ID" class="user-select-none position-absolute top-0" style="scroll-margin-top:var(--header-height,150px)"></div>
</div>