Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_3022e70aa03c4a20bccbdd702d3b34c0.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> 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 string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : string.Empty; 27 if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase)) 28 { 29 groupImage = $"/Files{groupImage}"; 30 } 31 32 string groupName = productList?.Group?.Name != null ? productList.Group.Name : string.Empty; 33 34 string ratio = Model.Item.GetRawValueString("ImageAspectRatio", string.Empty); 35 ratio = ratio != "0" ? ratio : string.Empty; 36 string ratioCssClass = ratio != string.Empty && ratio != "fill" ? " ratio" : string.Empty; 37 string ratioVariable = ratio != string.Empty ? "style=\"--bs-aspect-ratio: " + ratio + "\"" : string.Empty; 38 string fillClass = ratio == "fill" ? " h-100" : ""; 39 40 var parms = new Dictionary<string, object>(); 41 parms.Add("loading", "lazy"); 42 parms.Add("columns", Model.GridRowColumnCount); 43 44 if (ratio == "fill") { 45 parms.Add("cssClass", "w-100 h-100"); 46 } 47 else 48 { 49 parms.Add("cssClass", "mw-100 mh-100"); 50 } 51 52 parms.Add("style", string.Empty); 53 parms.Add("alt", groupName); 54 55 if (!string.IsNullOrEmpty(groupImage)) { 56 <div class="item_@Model.Item.SystemName.ToLower()"> 57 <figure class="m-0@(ratioCssClass)@(fillClass)" @ratioVariable> 58 @RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms) 59 </figure> 60 </div> 61 } else if (Pageview.IsVisualEditorMode) { 62 <div class="alert alert-dark m-0" role="alert"> 63 <span>@Translate("Product list group image: The image will be shown here, if any")</span> 64 </div> 65 } 66 } else if (Pageview.IsVisualEditorMode) 67 { 68 <div class="alert alert-dark m-0" role="alert"> 69 <span>@Translate("Product list group image: The image will be shown here, if any")</span> 70 </div> 71 } 72 73
Filtration:
Ajax MotionProtect - Superior - black
Ajax MotionProtect - Superior - black

Ajax MotionProtect - Superior - black

67723.09.BL1
Ajax MotionProtect - Superior - white
Ajax MotionProtect - Superior - white

Ajax MotionProtect - Superior - white

67724.09.WH1
Ajax MotionProtect Plus - Superior - black
Ajax MotionProtect Plus - Superior - black

Ajax MotionProtect Plus - Superior - black

67726.02.BL1
Ajax CombiProtect - Superior - black
Ajax CombiProtect - Superior - black

Ajax CombiProtect - Superior - black

67728.06.BL1
Ajax HomeSiren - Superior - black
Ajax HomeSiren - Superior - black

Ajax HomeSiren - Superior - black

67731.11.BL1
Ajax HomeSiren - Superior - white
Ajax HomeSiren - Superior - white

Ajax HomeSiren - Superior - white

67732.11.WH1
Ajax DoorProtect - Superior - white
Ajax DoorProtect - Superior - white

Ajax DoorProtect - Superior - white

67733.03.WH1
Ajax DoorProtect - Superior - black
Ajax DoorProtect - Superior - black

Ajax DoorProtect - Superior - black

67734.03.BL1
Ajax DoorProtect Plus - Superior - white
Ajax DoorProtect Plus - Superior - white

Ajax DoorProtect Plus - Superior - white

67735.21.WH1
Ajax DoorProtect Plus - Superior - black
Ajax DoorProtect Plus - Superior - black

Ajax DoorProtect Plus - Superior - black

67736.21.BL1
Ajax GlassProtect - Superior - black
Ajax GlassProtect - Superior - black

Ajax GlassProtect - Superior - black

67737.05.BL1
Ajax Button - Superior - white
Ajax Button - Superior - white

Ajax Button - Superior - white

70222.26.WH1
Ajax Button - Superior - black
Ajax Button - Superior - black

Ajax Button - Superior - black

70223.26.BL1
Ajax KeyPad Plus - Superior - white
Ajax KeyPad Plus - Superior - white

Ajax KeyPad Plus - Superior - white

70224.83.WH1
Ajax KeyPad Plus - Superior - black
Ajax KeyPad Plus - Superior - black

Ajax KeyPad Plus - Superior - black

70225.83.BL1
Ajax StreetSiren DoubleDeck - Superior - white
Ajax StreetSiren DoubleDeck - Superior - white

Ajax StreetSiren DoubleDeck - Superior - white

70226.61.WH1
16 out of 26 products
Load more products

The Ajax Superior line is designed for professionals.

Installation of Superior requires completion of a course with Ajax Systems.

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing