Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupPoster.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_56fcbbaa4b0c450db64d50117f723b3c.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) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14
at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 805
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
2 @using Dynamicweb.Frontend.Navigation
3 @using Dynamicweb.Ecommerce.ProductCatalog
4 @using Dynamicweb.Environment
5 @using Dynamicweb.Frontend
6
7 @{
8 ProductListViewModel productList = null;
9 if (Dynamicweb.Context.Current.Items.Contains("ProductList"))
10 {
11 productList = (ProductListViewModel)Dynamicweb.Context.Current.Items["ProductList"];
12 }
13 else if (Pageview.Page.Item["DummyProductGroup"] != null && Pageview.IsVisualEditorMode)
14 {
15 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page);
16 ProductListViewModel groupList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel();
17
18 if (groupList?.Products is object)
19 {
20 productList = groupList;
21 }
22 }
23 }
24
25 @if (productList is object)
26 {
27 string layout = Model.Item.GetRawValueString("Layout", "align-middle-center-text-center");
28 string alignment = "";
29
30 string searchParameter = Dynamicweb.Context.Current.Request.GetString("q");
31
32 bool hideTitle = Model.Item.GetBoolean("HideGroupTitle");
33 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-4");
34
35 string groupName = productList?.Group?.Name != null ? productList.Group.Name : "";
36 string headerName = searchParameter != "" ? Translate("Search results for") + ": " + searchParameter : groupName;
37
38 bool hideDescription = Model.Item.GetBoolean("HideGroupDescription");
39 string groupDescription = productList?.Group?.Description != null ? productList.Group.Description : "";
40 string descriptionFontSize = Model.Item.GetRawValueString("DescriptionFontSize", "fs-6");
41
42 string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : "";
43 if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase))
44 {
45 groupImage = $"/Files{groupImage}";
46 }
47
48 string posterHeight = Model.Item.GetRawValueString("PosterHeight", "");
49 posterHeight = posterHeight == "small" ? "min-vh-25" : posterHeight;
50 posterHeight = posterHeight == "medium" ? "min-vh-50" : posterHeight;
51 posterHeight = posterHeight == "large" ? "min-vh-75" : posterHeight;
52
53 string contentPadding = Model.Item.GetRawValueString("ContentPadding", "");
54 contentPadding = contentPadding == "none" ? "p-3 px-xl-3 py-xl-4" : contentPadding;
55 contentPadding = contentPadding == "small" ? "p-3 p-xl-4" : contentPadding;
56 contentPadding = contentPadding == "large" ? "p-4 p-xl-5" : contentPadding;
57
58 string maxWidth = Model.Item.GetRawValueString("TextReadability", "max-width-on");
59 maxWidth = maxWidth == "max-width-on" ? " mw-75ch" : maxWidth;
60 maxWidth = maxWidth == "max-width-off" ? "" : maxWidth;
61
62 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
63
64 if (!string.IsNullOrEmpty(groupImage))
65 {
66 var parms = new Dictionary<string, object>();
67 parms.Add("cssClass", "h-100 w-100");
68 parms.Add("columns", Model.GridRowColumnCount);
69
70 switch (layout)
71 {
72 case "align-top-left-text-left":
73 alignment = "text-start justify-content-start align-items-start";
74 break;
75 case "align-top-center-text-center":
76 alignment = "text-center justify-content-center align-items-start";
77 break;
78 case "align-top-right-text-right":
79 alignment = "text-end justify-content-end align-items-start";
80 break;
81 case "align-middle-left-text-left":
82 alignment = "text-start justify-content-start align-items-center";
83 break;
84 case "align-middle-center-text-center":
85 alignment = "text-center justify-content-center align-items-center";
86 break;
87 case "align-middle-right-text-right":
88 alignment = "text-end justify-content-end align-items-center";
89 break;
90 case "align-bottom-left-text-left":
91 alignment = "text-start justify-content-start align-items-end";
92 break;
93 case "align-bottom-center-text-center":
94 alignment = "text-center justify-content-center align-items-end";
95 break;
96 case "align-bottom-right-text-right":
97 alignment = "text-end justify-content-end align-items-end";
98 break;
99 }
100
101 <div class="position-relative h-100@(theme) @(posterHeight) item_@Model.Item.SystemName.ToLower()">
102 @if (!string.IsNullOrEmpty(groupImage))
103 {
104 string imageFilter = Model.Item.GetRawValueString("ImageFilter", "");
105 imageFilter = imageFilter == "no-filter" ? "" : imageFilter;
106 imageFilter = imageFilter == "filter" ? " image-filter" : imageFilter;
107
108 <div class="position-absolute top-0 bottom-0 end-0 start-0@(imageFilter)">
109 @RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms)
110 </div>
111 }
112
113 @if (!hideTitle || !hideDescription)
114 {
115 <div class="container-xl h-100 @(contentPadding)">
116 <div class="h-100 w-100 position-relative d-flex @(alignment)">
117 <div class="@(maxWidth)">
118 @if (!hideTitle)
119 {
120 <h1 class="@titleFontSize">@headerName</h1>
121 }
122
123 @if (!hideDescription && !string.IsNullOrEmpty(groupDescription))
124 {
125 <div class="@descriptionFontSize mb-0-last-child">
126 @groupDescription
127 </div>
128 }
129 </div>
130 </div>
131 </div>
132 }
133
134 </div>
135 }
136 else if (Pageview.IsVisualEditorMode)
137 {
138 <div class="alert alert-dark m-0" role="alert">
139 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span>
140 </div>
141 }
142 }
143 else if (Pageview.IsVisualEditorMode)
144 {
145 <div class="alert alert-dark m-0" role="alert">
146 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span>
147 </div>
148 }
149