Product List Extra Small
Error executing template "Designs/Swift-v2/Paragraph/CustomProductInfo.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_aee52e25706347889def65fd3bc10124.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.Ecommerce.ProductCatalog 3 @using Custom.StockLocation.ProductCatalog 4 @using Dynamicweb.Core.Encoders 5 @using System.Globalization 6 @using Dynamicweb.Frontend 7 8 @{ 9 ProductViewModel product = null; 10 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 11 { 12 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 13 } 14 else if (!string.IsNullOrEmpty(Pageview.Page.Item["DummyProduct"]?.ToString()) && Pageview.IsVisualEditorMode) 15 { 16 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 17 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 18 19 if (productList?.Products is object) 20 { 21 product = productList.Products[0]; 22 } 23 } 24 else if (Pageview.IsVisualEditorMode) 25 { 26 product = new ProductViewModel(); 27 product.Id = "1"; 28 product.VariantId = "394041"; 29 product.StockLevel = 78; 30 product.Name = "Canon Printer PIXMA PRO-100S"; 31 product.Number = "122253"; 32 product.EAN = "4549292040722"; 33 product.ProductFields = new Dictionary<string, FieldValueViewModel>(); 34 product.ProductFields.Add("SupplierProductNumber", new FieldValueViewModel() { SystemName = "SupplierProductNumber", Name = "SupplierProductNumber", Value = "0646C003" }); 35 product.ProductFields.Add("ProductColli", new FieldValueViewModel() { SystemName = "ProductColli", Name = "ProductColli", Value = 24 }); 36 } 37 38 var supplierProductNumber = product.ProductFields?.GetValueOrDefault("SupplierProductNumber"); 39 var colli = product.ProductFields?.GetValueOrDefault("ProductColli"); 40 } 41 42 @if (product != null && product is object) 43 { 44 <div class="custom-product-info"> 45 @if (Model.Item.GetBoolean("ShowTags")) 46 { 47 @RenderPartial("CustomProductTags.cshtml", product) 48 } 49 50 <div class="custom-product-info__number">@product.Number</div> 51 <h2 class="custom-product-info__name">@product.Name</h2> 52 53 @RenderPartial("CustomProductSpecifications.cshtml", product) 54 55 @if (Model.Item.GetBoolean("DetailedView")) 56 { 57 <div class="custom-product-info__details"> 58 @if (!string.IsNullOrEmpty(Dynamicweb.Core.Converter.ToString(supplierProductNumber?.Value))) 59 { 60 <div class="custom-product-info__detail-item"> 61 <span class="custom-product-info__detail-label">@Translate("Custom.Boston.Product.SupplierPartNumber", "Supplier P/N")</span> 62 <span class="custom-product-info__detail-value">@supplierProductNumber</span> 63 </div> 64 } 65 @if (!string.IsNullOrEmpty(product.EAN)) 66 { 67 <div class="custom-product-info__detail-item"> 68 <span class="custom-product-info__detail-label">@Translate("Custom.Boston.Product.BarcodeEAN", "Stregkode / EAN")</span> 69 <span class="custom-product-info__detail-value">@product.EAN</span> 70 </div> 71 } 72 73 @if ((int)colli.Value > 0) 74 { 75 <div class="custom-product-info__detail-item"> 76 <span class="custom-product-info__detail-label">@Translate("Custom.Boston.Product.Colli", "Kolli")</span> 77 <span class="custom-product-info__detail-value">@colli</span> 78 </div> 79 } 80 81 @if (Model.Item.GetBoolean("ShowStock")) 82 { 83 var resolvedStockStatus = product.ResolveStockStatus(); 84 string stockStatusLabel = product.StockLevel > 0 ? Translate("Custom.Boston.Product.InStock", "In stock") : Translate("Custom.Boston.Product.OutOfStock", "Out of stock"); 85 stockStatusLabel = !string.IsNullOrWhiteSpace(resolvedStockStatus.Text) ? resolvedStockStatus.Text : stockStatusLabel; 86 87 <div class="custom-product-info__detail-item custom-product-info__stock"> 88 @if (resolvedStockStatus.HasIcon) 89 { 90 if (resolvedStockStatus.Icon.EndsWith(".svg", StringComparison.OrdinalIgnoreCase)) 91 { 92 <span class="stock-indicator stock-indicator--icon" aria-hidden="true">@ReadFile(resolvedStockStatus.Icon)</span> 93 } 94 else 95 { 96 <span class="stock-indicator stock-indicator--icon" aria-hidden="true"> 97 <img src="@HtmlEncoder.HtmlAttributeEncode(resolvedStockStatus.Icon)" alt="" class="stock-indicator__image" /> 98 </span> 99 } 100 } 101 else 102 { 103 <span class="stock-indicator @resolvedStockStatus.FallbackCssClass" aria-hidden="true"></span> 104 } 105 106 @if (!resolvedStockStatus.NeverOutOfStock && resolvedStockStatus.StockLevel > 0) 107 { 108 <span class="stock-text">@stockStatusLabel: @resolvedStockStatus.StockLevel</span> 109 } 110 else 111 { 112 <span class="stock-text">@stockStatusLabel</span> 113 } 114 </div> 115 } 116 117 @if (Model.Item.TryGetItem("Button", out ItemViewModel button)) 118 { 119 @RenderPartial("./Swift-v2_Button/ButtonItem.cshtml", button) 120 } 121 122 </div> 123 } 124 </div> 125 } 126