Swift

Clothing

Castelli Logo Bandana
Castelli Logo Bandana

Castelli Logo Bandana

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_d852c9c132874f3e82f966e2716e76dc : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Performance Liberty City Cycling Cap
Performance Liberty City Cycling Cap

Performance Liberty City Cycling Cap

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_43d2e05515d542b2b11972a1b848f068 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Adidas adiStar Glove
Adidas adiStar Glove

Adidas adiStar Glove

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_a254731bcf034720a7b217c30b72f6a3 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Cannondale Featherweight Jersey
Cannondale Featherweight Jersey

Cannondale Featherweight Jersey

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_59a8f347db8f4d3cae16da42c65adfd9 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Pearl Izumi Women’s Whisper Vest
Pearl Izumi Women’s Whisper Vest

Pearl Izumi Women’s Whisper Vest

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_fe4e207231324b8ca37d0c9c2935fd45 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Louis Garneau Atmos 2 Vest
Louis Garneau Atmos 2 Vest

Louis Garneau Atmos 2 Vest

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_b1eeb4b227634160bc1e899f245a0233 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Shimano SH-R075 Road Shoe
Shimano SH-R075 Road Shoe

Shimano SH-R075 Road Shoe

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_f9896d8f4ff84aba86c1f9a1302e3a4e : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
New Performance Elite Short
New Performance Elite Short

New Performance Elite Short

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_920bf0368e3942b5a39b770b7ace542f : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Performance Body-Secure Jersey
Performance Body-Secure Jersey

Performance Body-Secure Jersey

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_d4cfc52f0eed4b0b8e165ebb9259e41d : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Fox Mojave Glove
Fox Mojave Glove

Fox Mojave Glove

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_d58353de01744163abefaa9f51ee9ad0 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Race Face Deus XC Glove
Race Face Deus XC Glove

Race Face Deus XC Glove

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_f199c14658834136a2a71fc51c85a759 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
Pearl Izumi MicroSensor Balaclava
Pearl Izumi MicroSensor Balaclava

Pearl Izumi MicroSensor Balaclava

Error compiling template "Designs/Swift-v2/Paragraph/Swift-v2_ProductPrice.cshtml"
Line 84: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 85: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source.
Line 148: 'PriceViewModel' does not contain a definition for 'TryGetVatLabel' and no accessible extension method 'TryGetVatLabel' accepting a first argument of type 'PriceViewModel' could be found (are you missing a using directive or an assembly reference?)

1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb.Ecommerce.ProductCatalog; 11 using Dynamicweb.Ecommerce.Products; 12 internal class RazorEngine_83aaae4d471c460982d259d4402a218a : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 13 { 14 #pragma warning disable 1998 15 public async override global::System.Threading.Tasks.Task ExecuteAsync() 16 { 17 WriteLiteral("\n"); 18 ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } WriteLiteral("\n"); 19 if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; WriteLiteral("\t<div"); 20 BeginWriteAttribute("class", " class=\"", 4037, "\"", 4095, 3); 21 WriteAttributeValue("", 4045, textAlign, 4045, 10, false); 22 WriteAttributeValue(" ", 4055, "item_", 4056, 6, true); 23 WriteAttributeValue("", 4061, Model.Item?.SystemName?.ToLower(), 4061, 34, false); 24 EndWriteAttribute(); 25 WriteLiteral(" data-product-id=\""); 26 Write(product?.Id); 27 WriteLiteral("\" data-variant-id=\""); 28 Write(product?.VariantId); 29 WriteLiteral("\">\n"); 30 if (showInformativePrice && product?.PriceInformative.Price != 0) { WriteLiteral("\t\t\t<div class=\"opacity-50\">\n\t\t\t\t<span>"); 31 Write(Translate("RRP")); 32 WriteLiteral(" </span>\n\t\t\t\t<span class=\"text-decoration-line-through text-price\">"); 33 Write(product?.PriceInformative.PriceFormatted); 34 WriteLiteral("</span>\n\t\t\t</div>\n"); 35 } WriteLiteral("\t\t<div"); 36 BeginWriteAttribute("class", " class=\"", 4431, "\"", 4515, 7); 37 WriteAttributeValue("", 4439, priceFontSize, 4439, 14, false); 38 WriteAttributeValue(" ", 4453, "m-0", 4454, 4, true); 39 WriteAttributeValue(" ", 4457, "d-flex", 4458, 7, true); 40 WriteAttributeValue(" ", 4464, "flex-wrap", 4465, 10, true); 41 WriteAttributeValue(" ", 4474, flexDirection, 4475, 14, false); 42 WriteAttributeValue(" ", 4489, flexGap, 4490, 8, false); 43 WriteAttributeValue(" ", 4498, horizontalAlign, 4499, 16, false); 44 EndWriteAttribute(); 45 WriteLiteral(" style=\"row-gap: 0 !important\" itemprop=\"offers\" itemscope itemtype=\"https://schema.org/Offer\">\n\t\t\t<span itemprop=\"priceCurrency\""); 46 BeginWriteAttribute("content", " content=\"", 4645, "\"", 4683, 1); 47 WriteAttributeValue("", 4655, product?.Price.CurrencyCode, 4655, 28, false); 48 EndWriteAttribute(); 49 WriteLiteral(" class=\"d-none\"></span>\n\t\t\t<span itemprop=\"price\""); 50 BeginWriteAttribute("content", " content=\"", 4733, "\"", 4764, 1); 51 WriteAttributeValue("", 4743, product?.Price.Price, 4743, 21, false); 52 EndWriteAttribute(); 53 WriteLiteral(" class=\"d-none\"></span>\n\n"); 54 if (product.HasDiscount()) { WriteLiteral("\t\t\t\t<span"); 55 BeginWriteAttribute("class", " class=\"", 4835, "\"", 4889, 3); 56 WriteAttributeValue("", 4843, "text-decoration-line-through", 4843, 28, true); 57 WriteAttributeValue(" ", 4871, "opacity-75", 4872, 11, true); 58 WriteAttributeValue(" ", 4882, order, 4883, 6, false); 59 EndWriteAttribute(); 60 WriteLiteral(">\n\t\t\t\t\t<span class=\"text-price\">"); 61 Write(beforePrice); 62 WriteLiteral("</span>\n\t\t\t\t</span>\n"); 63 } WriteLiteral("\t\t\t\n\t\t\t<span class=\"text-price\">"); 64 Write(price); 65 WriteLiteral("</span>\n"); 66 if (product.Price.TryGetVatLabel(out string vatLabel)) { WriteLiteral("\t\t\t\t<small class=\"opacity-85 fst-normal order-3\">"); 67 Write(Translate(vatLabel)); 68 WriteLiteral("</small>\n"); 69 } WriteLiteral("\t\t\t<link itemprop=\"url\""); 70 BeginWriteAttribute("href", " href=\"", 5216, "\"", 5227, 1); 71 WriteAttributeValue("", 5223, url, 5223, 4, false); 72 EndWriteAttribute(); 73 WriteLiteral(">\n\n"); 74 if (IsNeverOutOfStock) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 75 Write(Translate("Available in stock")); 76 WriteLiteral("</span>\n"); 77 } else if (product.StockLevel > 0) { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 78 Write(Translate("In stock")); 79 WriteLiteral("</span>\n"); 80 } else { WriteLiteral("\t\t\t\t<span itemprop=\"availability\" class=\"d-none\">"); 81 Write(Translate("Out of stock")); 82 WriteLiteral("</span>\n"); 83 } WriteLiteral("\t\t</div>\n\t</div>\n"); 84 } else if (Pageview.IsVisualEditorMode) { WriteLiteral("\t<div class=\"alert alert-dark m-0\" role=\"alert\">\n\t\t<span>"); 85 Write(Translate("No products available")); 86 WriteLiteral("</span>\n\t</div>\n"); 87 } } 88 #pragma warning restore 1998 89 } 90 } 91 #pragma warning restore 1591 92

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Ecommerce.ProductCatalog @using Dynamicweb.Ecommerce.Products @{ ProductViewModel product = null; if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) { product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; } else if (Pageview.IsVisualEditorMode) { product = new ProductViewModel(); product.Price = new PriceViewModel() { Price = 99, PriceFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 99, PriceWithoutVatFormatted = "99 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 99, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; product.PriceInformative = new PriceViewModel() { Price = 49, PriceFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 49, PriceWithoutVatFormatted = "49 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 49, PriceWithVatFormatted = "49 " + Pageview.Area.EcomCurrencyId }; product.PriceBeforeDiscount = new PriceViewModel() { Price = 199, PriceFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithoutVat = 199, PriceWithoutVatFormatted = "199 " + Pageview.Area.EcomCurrencyId, PriceWithVat = 199, PriceWithVatFormatted = "99 " + Pageview.Area.EcomCurrencyId }; } string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); bool anonymousUser = Pageview.User == null; bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser; bool productIsDiscontinued = product is object && product.Discontinued; bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; string priceType = string.Empty; if (Dynamicweb.Context.Current.Items.Contains("PriceType")) { priceType = Dynamicweb.Context.Current.Items["PriceType"].ToString().ToLower(); } } @if (product is object && !hidePrice && !isDiscontinued && priceType != "fixedprice") { bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); string layout = Model.Item.GetRawValueString("Layout", "horizontal"); string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; textAlign = horizontalAlign == "end" ? "text-end" : textAlign; horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; string flexDirection = layout == "horizontal" ? "align-items-end" : "flex-column"; string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; string order = layout == "horizontal" ? string.Empty : "order-2"; string? priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted; string? priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted; string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product?.Price.PriceFormatted; price = priceMin != priceMax ? price = priceMin + " - " + priceMax : price; string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product?.PriceBeforeDiscount.PriceFormatted; Uri url = Dynamicweb.Context.Current.Request.Url; bool IsNeverOutOfStock = product.NeverOutOfstock; <div class="@textAlign item_@Model.Item?.SystemName?.ToLower()" data-product-id="@product?.Id" data-variant-id="@product?.VariantId"> @if (showInformativePrice && product?.PriceInformative.Price != 0) { <div class="opacity-50"> <span>@Translate("RRP") </span> <span class="text-decoration-line-through text-price">@product?.PriceInformative.PriceFormatted</span> </div> } <div class="@priceFontSize m-0 d-flex flex-wrap @flexDirection @flexGap @horizontalAlign" style="row-gap: 0 !important" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="priceCurrency" content="@product?.Price.CurrencyCode" class="d-none"></span> <span itemprop="price" content="@product?.Price.Price" class="d-none"></span> @if (product.HasDiscount()) { <span class="text-decoration-line-through opacity-75 @order"> <span class="text-price">@beforePrice</span> </span> } <span class="text-price">@price</span> @if (product.Price.TryGetVatLabel(out string vatLabel)) { <small class="opacity-85 fst-normal order-3">@Translate(vatLabel)</small> } @* Stock state for Schema.org, start *@ <link itemprop="url" href="@url"> @if (IsNeverOutOfStock) { <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> } else if (product.StockLevel > 0) { <span itemprop="availability" class="d-none">@Translate("In stock")</span> } else { <span itemprop="availability" class="d-none">@Translate("Out of stock")</span> } @* Stock state for Schema.org, stop *@ </div> </div> } else if (Pageview.IsVisualEditorMode) { <div class="alert alert-dark m-0" role="alert"> <span>@Translate("No products available")</span> </div> }
12 out of 20 products
Load more products

Clothing

Discover our collection of stylish and comfortable clothing, designed for both performance and everyday wear. From jerseys to outerwear, find the perfect pieces to complement your active lifestyle.