Error executing template "/Designs/Swift-v2/Paragraph/Custom_Swift-v2_ProductHeader.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_36a0ef175f814296a16d84c85bc4a5ab.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> @using Dynamicweb.Ecommerce.ProductCatalog @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (!string.IsNullOrEmpty(Pageview.Page.Item["DummyProduct"]?.ToString()) && Pageview.IsVisualEditorMode) { var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); if (productList?.Products is object) { product = productList.Products[0]; } } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Name = Translate("My product"); product.Number = "12345"; } string manufacturer = null; if (product?.ProductFields != null && product.ProductFields.TryGetValue("ManufacturerField", out var fv)) { manufacturer = fv?.Value?.ToString(); } if (string.IsNullOrWhiteSpace(manufacturer) && Pageview.IsVisualEditorMode) { manufacturer = Translate("Manufacturer"); } //Marked Products string markedItem = string.Empty; bool isPunchoutUser = false; FieldValueViewModel specPrice; bool hasSpecPrice = false; if (!Pageview.IsVisualEditorMode && Pageview.User != null) { isPunchoutUser = Pageview.User.CustomFieldValues.SingleOrDefault(x => x.CustomField.SystemName == "AccessUser_IsPunchoutUser").Value.ToString().Equals("True"); hasSpecPrice = product.ProductFields.TryGetValue("SpecPrice", out specPrice); markedItem = specPrice != null && specPrice.Value.ToString() == "yes" && isPunchoutUser ? "markeditem" : ""; } string lastPurchaseDate = null; if (product?.ProductFields != null && product.ProductFields.TryGetValue("LastPurchaseDate", out var fvDate)) { lastPurchaseDate = fvDate?.Value?.ToString(); } if (string.IsNullOrWhiteSpace(lastPurchaseDate) && Pageview.IsVisualEditorMode) { lastPurchaseDate = Translate("01-01-2025"); } string lastPurchaseQuantity = null; if (product?.ProductFields != null && product.ProductFields.TryGetValue("LastPurchaseQuantity", out var fvQty)) { lastPurchaseQuantity = fvQty?.Value?.ToString(); } if (string.IsNullOrWhiteSpace(lastPurchaseQuantity) && Pageview.IsVisualEditorMode) { lastPurchaseQuantity = "10"; } string clickProductLink = ""; if (Pageview.IsVisualEditorMode) { clickProductLink = ""; } else { clickProductLink = "onclick=\"return clickProductLink('" + @product.Id + "', '" + @product.Name + "', '" + @product.VariantName + "', '" + @product.Price.CurrencyCode + "', '" + @product.Price.ToStringInvariant() + "', '" + @product.Discount.ToStringInvariant() + "')\""; } string link = product.GetProductLink(GetPageIdByNavigationTag("Shop"), false); if (!Pageview.IsVisualEditorMode) { string ReplacementProduct = !string.IsNullOrEmpty(product.ReplacementProduct.ProductId) ? product.ReplacementProduct.GetProduct().GetProductLink(GetPageIdByNavigationTag("Shop"), false) : ""; link = !string.IsNullOrEmpty(ReplacementProduct) ? ReplacementProduct : link; } } <div class="position-relative"> <a href="@link" class="stretched-link" onmouseover="swift.Image.swapImage(event)" onmouseout="swift.Image.swapImage(event)" @clickProductLink> <span class="visually-hidden">@product.Name</span> </a> <script> function clickProductLink(productId, productName, productVariant, productCurrency, productPrice, productDiscount) { if (typeof gtag !== "undefined") { gtag("event", "select_item", { item_list_id: "product_list_item_repeater", item_list_name: "Product list (Item Repeater)", items: [ { item_id: productId, item_name: productName, currency: productCurrency, item_list_id: "product_list_item_repeater", item_list_name: "Product list (Item Repeater)", item_variant: productVariant, price: productPrice, discount: productDiscount } ] }); } } </script> @if (product is object) { string titleFontSize = Model.Item.GetRawValueString("FontSize", "fs-6"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); horizontalAlign = horizontalAlign == "center" ? "text-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" ? "text-end" : horizontalAlign; string headingLevel = Model.Item.GetString("HeadingLevel", "h2"); string headingLevelStart = $"<{headingLevel} class=\"{titleFontSize} {horizontalAlign} {markedItem} fw-bold m-0 item_{Model.Item.SystemName.ToLower()}\" itemprop=\"name\">"; string headingLevelStop = $"</{headingLevel}>"; @headingLevelStart @product.Name @headingLevelStop <span class="fs-7 opacity-85 @horizontalAlign fw-bold"> @product.Number @if (!string.IsNullOrWhiteSpace(manufacturer)) { @($" Producent: {manufacturer}") } </span> @if (!string.IsNullOrWhiteSpace(lastPurchaseDate) || !string.IsNullOrWhiteSpace(lastPurchaseQuantity)) { <span class="fs-7 opacity-85 @horizontalAlign d-block fw-bold"> @Translate("Last purchase"): @lastPurchaseDate, @Translate("Quantity"): @lastPurchaseQuantity </span> } } </div>