Error executing template "Designs/Swift/eCom/ProductCatalog/ProductViewDetail.cshtml" System.ArgumentNullException: Value cannot be null. Parameter name: key at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value) at Dynamicweb.Caching.DictionaryCache`2.GetCacheResult(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(TKey key) at Dynamicweb.Ecommerce.ProductCatalog.ViewSettingsBaseCurrencyBase`1.GetCurrency() at Dynamicweb.Ecommerce.ProductCatalog.ViewSettingsBaseCurrencyBase`1.GetPriceContext() at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetPrice(PriceViewModelSettings settings, IList`1 products, Boolean& pricesHasBeenPrepared, Object lock, Lazy`1 priceInfo) at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__49() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at CompiledRazorTemplates.Dynamic.RazorEngine_9f3530e5d38f4d2caef8bc58b91c5c00.Execute() in D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\eCom\ProductCatalog\ProductViewDetail.cshtml:line 53 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()1 @inherits ViewModelTemplate<ProductViewModel> 2 @using Dynamicweb.Rendering 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using Dynamicweb.Core 5 6 @{ 7 string metaDescription = string.IsNullOrEmpty(Model.MetaDescription) ? Model.Name : Model.MetaDescription; 8 9 Pageview.Meta.AddTag($"<meta property=\"og:image\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{Model.DefaultImage.Value}\">"); 10 Pageview.Meta.AddTag($"<meta property=\"og:image:alt\" content=\"{Model.Name}\">"); 11 Pageview.Meta.AddTag($"<meta property=\"og:description\" content=\"{metaDescription}\">"); 12 13 Pageview.Meta.AddTag("twitter:image", Model.DefaultImage.Value); 14 Pageview.Meta.AddTag("twitter:image:alt", Model.Name); 15 Pageview.Meta.AddTag("twitter:description", metaDescription); 16 } 17 18 @{ 19 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 20 { 21 Dynamicweb.Context.Current.Items["ProductDetails"] = Model; 22 } 23 else 24 { 25 Dynamicweb.Context.Current.Items.Add("ProductDetails", Model); 26 } 27 28 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 29 if (isLazyLoadingForProductInfoEnabled) 30 { 31 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 32 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 33 bool hasVariantId = !string.IsNullOrEmpty(Model.VariantId); 34 string variantIdParam = hasVariantId ? $"/{Model.VariantId}" : ""; 35 string priceFilledProperties = $"Price,PriceFormatted{(showPricesWithVat == "false" && !neverShowVat ? ",PriceWithVat,PriceWithVatFormatted" : "")}"; 36 string productInfoFeed = $@"/dwapi/ecommerce/products/{Model.Id}{variantIdParam} 37 ?UserId={Converter.ToString(Pageview.User?.ID)} 38 &LanguageId={Pageview.Area.EcomLanguageId}&CurrencyCode={Pageview.Area.EcomCurrencyId}&CountryCode={Pageview.Area.EcomCountryCode}&ShopId={Pageview.Area.EcomShopId} 39 &FilledProperties=Id,Price,PriceBeforeDiscount,StockLevel,VariantInfo,NeverOutOfstock,Prices 40 &PriceSettings.ShowPricesWithVat={Pageview.Area.EcomPricesWithVat} 41 &PriceSettings.FilledProperties={priceFilledProperties} 42 &getproductinfo=true"; 43 Dynamicweb.Context.Current.Items["ProductInfoFeed"] = productInfoFeed; 44 45 <script type="module"> 46 swift.LiveProductInfo.init(); 47 </script> 48 } 49 } 50 51 <script> 52 gtag("event", "view_item", { 53 currency: "@Model.Price.CurrencyCode", 54 value: @Model.Price.ToStringInvariant(), 55 items: [ 56 { 57 item_id: "@Model.Number", 58 item_name: "@Dynamicweb.Core.Encoders.HtmlEncoder.JavaScriptStringEncode(Model.Name)", 59 currency: "@Model.Price.CurrencyCode", 60 price: @Model.Price.ToStringInvariant(), 61 discount: @Model.Discount.ToStringInvariant() 62 } 63 ] 64 }); 65 </script> 66 67 <script> 68 window.addEventListener('load', function (event) { 69 swift.Video.init(); 70 }); 71 </script> 72
Product number:
1799
Durchflussregler
- Mouldpro
Error executing template "Designs/Swift/Paragraph/Swift_ProductPrice.cshtml" System.ArgumentNullException: Value cannot be null. Parameter name: key at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value) at Dynamicweb.Caching.DictionaryCache`2.GetCacheResult(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(IEnumerable`1 keys) at Dynamicweb.Caching.ServiceCache`2.GetCache(TKey key) at Dynamicweb.Ecommerce.ProductCatalog.ViewSettingsBaseCurrencyBase`1.GetCurrency() at Dynamicweb.Ecommerce.ProductCatalog.ViewSettingsBaseCurrencyBase`1.GetPriceContext() at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetDiscountInfo(PriceViewModelSettings settings, Product product) at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_2.<BulkCreateView>b__47() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at CompiledRazorTemplates.Dynamic.RazorEngine_a09c1338e5064478af62dbe4b54910b9.Execute() in D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\Paragraph\Swift_ProductPrice.cshtml:line 77 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 4 @{ 5 ProductViewModel product = null; 6 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 7 { 8 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 9 } 10 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 11 { 12 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 13 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 14 15 if (productList?.Products is object) 16 { 17 product = productList.Products[0]; 18 } 19 } 20 21 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 22 bool anonymousUser = Pageview.User == null; 23 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsWebServiceConnectionAvailable"]); 24 bool hidePrice = anonymousUsersLimitations.Contains("price") && anonymousUser || Pageview.AreaSettings.GetBoolean("ErpDownHidePrices") && isErpConnectionDown; 25 26 bool productIsDiscontinued = product is object && product.Discontinued; 27 bool doNotShowPriceIfProductIsDiscontinued = Model.Item.GetBoolean("DoNotShowPriceIfProductIsDiscontinued"); 28 var isDiscontinued = productIsDiscontinued && doNotShowPriceIfProductIsDiscontinued; 29 } 30 31 @if (product is object && !hidePrice && !isDiscontinued) { 32 bool showInformativePrice = Model.Item.GetBoolean("ShowInformativePrice"); 33 bool hideVatPrice = Model.Item.GetBoolean("HideVatPrice"); 34 string unitId = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.Form.Get("UnitId")) ? Dynamicweb.Context.Current.Request.Form.Get("UnitId") : string.Empty; 35 36 string priceFontSize = Model.Item.GetRawValueString("PriceSize", "fs-2"); 37 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 38 string layout = Model.Item.GetRawValueString("Layout", "horizontal"); 39 string textAlign = horizontalAlign == "center" ? "text-center" : string.Empty; 40 textAlign = horizontalAlign == "end" ? "text-end" : textAlign; 41 42 horizontalAlign = horizontalAlign == "center" && layout == "horizontal" ? "justify-content-center" : horizontalAlign; 43 horizontalAlign = horizontalAlign == "end" && layout == "horizontal" ? "justify-content-end" : horizontalAlign; 44 horizontalAlign = horizontalAlign == "center" && layout == "vertical" ? "align-items-center" : horizontalAlign; 45 horizontalAlign = horizontalAlign == "end" && layout == "vertical" ? "align-items-end" : horizontalAlign; 46 47 string flexDirection = layout == "horizontal" ? string.Empty : "flex-column"; 48 string flexGap = layout == "horizontal" ? "gap-3" : string.Empty; 49 string order = layout == "horizontal" ? string.Empty : "order-2"; 50 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? "theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 51 theme = GetViewParameter("theme") != null ? GetViewParameterString("theme") : theme; 52 53 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 54 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 55 contentPadding = contentPadding == "small" ? "p-1 px-md-2 py-md-1" : contentPadding; 56 contentPadding = contentPadding == "large" ? "p-2 px-md-3 py-md-2" : contentPadding; 57 58 string showPricesWithVat = Pageview.Area.EcomPricesWithVat.ToLower(); 59 bool neverShowVat = string.IsNullOrEmpty(showPricesWithVat); 60 61 if (Dynamicweb.Frontend.PageView.Current().Area.ReverseChargeForVat || Dynamicweb.Security.UserManagement.User.GetCurrentExtranetUser()?.ReverseChargeForVat == true){ 62 if (showPricesWithVat == "false"){ 63 showPricesWithVat = ""; 64 neverShowVat = true; 65 } 66 } 67 68 string priceMin = ""; 69 string priceMax = ""; 70 71 string liveInfoClass = ""; 72 string productInfoFeed = ""; 73 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current.Items["IsLazyLoadingForProductInfoEnabled"]); 74 double discountPercentage = 0; 75 76 77 if (product.ProductDiscounts.Count() > 0){ 78 79 foreach (var discount in product.ProductDiscounts){ 80 discountPercentage = discountPercentage + discount.Percentage; 81 } 82 83 } 84 if (isLazyLoadingForProductInfoEnabled) 85 { 86 if (Dynamicweb.Context.Current.Items.Contains("ProductInfoFeed")) 87 { 88 productInfoFeed = Dynamicweb.Context.Current.Items["ProductInfoFeed"]?.ToString(); 89 if (!string.IsNullOrEmpty(productInfoFeed)) 90 { 91 productInfoFeed = $"data-product-info-feed=\"{productInfoFeed}\""; 92 } 93 } 94 liveInfoClass = "js-live-info"; 95 } 96 97 <div class="@textAlign @liveInfoClass item_@Model.Item.SystemName.ToLower()" data-product-id="@product.Id" data-variant-id="@product.VariantId" @productInfoFeed> 98 @if (showInformativePrice && product.PriceInformative.Price != 0) 99 { 100 <div class="opacity-50"> 101 <span>@Translate("RRP") </span> 102 <span class="text-decoration-line-through text-price">@product.PriceInformative.PriceFormatted</span> 103 </div> 104 } 105 <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"> 106 <span itemprop="priceCurrency" content="@product.Price.CurrencyCode" class="d-none"></span> 107108109 @if (showPricesWithVat == "false" && !neverShowVat) 110 { 111 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 112 { 113 <span itemprop="price" content="" class="d-none"></span> 114 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 115 } 116 else 117 { 118 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceWithoutVatFormatted : product.PriceBeforeDiscount.PriceWithoutVatFormatted; 119120 <span itemprop="price" content="@product.Price.PriceWithoutVat.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)" class="d-none"></span> 121 if (product.Price.Price != product.PriceBeforeDiscount.Price) 122 { 123 <span class="text-decoration-line-through opacity-75 @order">@beforePrice</span> 124 } 125 } 126 } 127 else 128 { 129 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 130 { 131 <span itemprop="price" content="" class="d-none"></span> 132 <span class="text-decoration-line-through js-text-decoration-line-through opacity-75 me-3 text-price js-text-price d-none" data-show-if="LiveProductInfo.product.Price.Price != LiveProductInfo.product.PriceBeforeDiscount.Price"></span> 133 } 134 else 135 { 136 string beforePrice = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).PriceBeforeDiscount.PriceFormatted : product.PriceBeforeDiscount.PriceFormatted; 137138 <span itemprop="price" content="@product.Price.Price.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)" class="d-none"></span> 139140 if (product.Price.Price != product.PriceBeforeDiscount.Price) 141 { 142 <span class="text-decoration-line-through opacity-75 @order"> 143 <span class="text-price">@beforePrice</span> 144 </span> 145 } 146 } 147 } 148149 @if (showPricesWithVat == "false" && !neverShowVat) 150 { 151 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 152 { 153 <span class="text-price js-text-price"> 154 <span class="spinner-border" role="status"></span> 155 </span> 156 } 157 else 158 { 159 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVatFormatted : product.Price.PriceWithoutVatFormatted; 160 var priceNotFormatted = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithoutVat : product.Price.PriceWithoutVat; 161162 if (product?.VariantInfo?.VariantInfo != null) 163 { 164 priceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithoutVatFormatted : ""; 165 priceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithoutVatFormatted : ""; 166 } 167 if (priceMin != priceMax) 168 { 169 price = priceMin + " - " + priceMax; 170 } 171 else if (priceNotFormatted == 0){ 172 price = priceMin; 173 } 174 if (discountPercentage > 0){ 175176 double discountpriceMin = 0; 177 double discountpriceMax = 0; 178 string pricediscount = ""; 179 string currencySymbol = Dynamicweb.Ecommerce.Common.Context.Currency.Symbol; 180181 if (product?.VariantInfo?.VariantInfo != null) 182 { 183 discountpriceMin = product?.VariantInfo?.PriceMin?.PriceWithoutVat != null ? product.VariantInfo.PriceMin.PriceWithoutVat : 0; 184 discountpriceMax = product?.VariantInfo?.PriceMax?.PriceWithoutVat != null ? product.VariantInfo.PriceMax.PriceWithoutVat : 0; 185186 discountpriceMin = discountpriceMin - (discountpriceMin * discountPercentage / 100); 187 discountpriceMax = discountpriceMax - (discountpriceMax * discountPercentage / 100); 188189 } 190 if (discountpriceMin != discountpriceMax) 191 { 192 pricediscount = currencySymbol + discountpriceMin.ToString("F2") + " - " + currencySymbol + discountpriceMax.ToString("F2"); 193 } 194 else if (priceNotFormatted == 0){ 195 pricediscount = currencySymbol + discountpriceMin.ToString("F2"); 196 } 197198 <span class="@theme @contentPadding"> 199 <span class="text-decoration-line-through text-price">@price</span> 200 </span> 201202 <span class="@theme @contentPadding"> 203 <span class="text-price">@pricediscount</span> 204 </span> 205 } else { 206207 <span class="@theme @contentPadding"> 208 <span class="text-price">@price</span> 209 </span> 210211 } 212 } 213 } 214 else 215 { 216 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 217 { 218 <span class="text-price js-text-price"> 219 <span class="spinner-border" role="status"></span> 220 </span> 221 } 222 else 223 { 224 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceFormatted : product.Price.PriceFormatted; 225 var priceNotFormatted = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.Price : product.Price.Price; 226 if (product?.VariantInfo?.VariantInfo != null) 227 { 228 priceMin = product?.VariantInfo?.PriceMin?.PriceFormatted != null ? product.VariantInfo.PriceMin.PriceFormatted : ""; 229 priceMax = product?.VariantInfo?.PriceMax?.PriceFormatted != null ? product.VariantInfo.PriceMax.PriceFormatted : ""; 230 } 231 if (priceMin != priceMax) 232 { 233 price = priceMin + " - " + priceMax; 234 } 235 else if (priceNotFormatted == 0){ 236 price = priceMin; 237 } 238 <span class="@theme @contentPadding"> 239 <span class="text-price">@price</span> 240 </span> 241 } 242 } 243244 @* Stock state for Schema.org, start *@ 245 @{ 246 Uri url = Dynamicweb.Context.Current.Request.Url; 247 } 248249 <link itemprop="url" href="@url"> 250251 @{ 252 bool IsNeverOutOfStock = product.NeverOutOfstock; 253 } 254255 @if (IsNeverOutOfStock) 256 { 257 <span itemprop="availability" class="d-none">@Translate("Available in stock")</span> 258 } 259 else 260 { 261 if (product.StockLevel > 0) 262 { 263 <span itemprop="availability" class="d-none">InStock</span> 264 } 265 else 266 { 267 <span itemprop="availability" class="d-none">OutOfStock</span> 268 } 269 } 270 @* Stock state for Schema.org, stop *@ 271272 </div> 273274 @if (showPricesWithVat == "false" && !neverShowVat) 275 { 276 if (isLazyLoadingForProductInfoEnabled && !Pageview.IsVisualEditorMode) 277 { 278 if (!hideVatPrice){ 279 <small class="opacity-85 fst-normal js-text-price-with-vat d-none" data-suffix="@Translate("Incl. VAT")"></small> 280 } 281 } 282 else 283 { 284 string price = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVatFormatted : product.Price.PriceWithVatFormatted; 285 var priceNotFormatted = !string.IsNullOrEmpty(unitId) ? product.GetPrice(unitId).Price.PriceWithVat : product.Price.PriceWithVat; 286287 if (product?.VariantInfo?.VariantInfo != null) 288 { 289 priceMin = product?.VariantInfo?.PriceMin?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMin.PriceWithVatFormatted : ""; 290 priceMax = product?.VariantInfo?.PriceMax?.PriceWithVatFormatted != null ? product.VariantInfo.PriceMax.PriceWithVatFormatted : ""; 291 } 292 if (priceMin != priceMax) 293 { 294 price = priceMin + " - " + priceMax; 295 } 296 else if (priceNotFormatted == 0){ 297 price = priceMin; 298 } 299 if (discountPercentage > 0){ 300301 double discountpriceMin = 0; 302 double discountpriceMax = 0; 303 string pricediscount = ""; 304 string currencySymbol = Dynamicweb.Ecommerce.Common.Context.Currency.Symbol; 305306 if (product?.VariantInfo?.VariantInfo != null) 307 { 308 discountpriceMin = product?.VariantInfo?.PriceMin?.PriceWithVat != null ? product.VariantInfo.PriceMin.PriceWithVat : 0; 309 discountpriceMax = product?.VariantInfo?.PriceMax?.PriceWithVat != null ? product.VariantInfo.PriceMax.PriceWithVat : 0; 310311 discountpriceMin = discountpriceMin - (discountpriceMin * discountPercentage / 100); 312 discountpriceMax = discountpriceMax - (discountpriceMax * discountPercentage / 100); 313314 } 315 if (discountpriceMin != discountpriceMax) 316 { 317 pricediscount = currencySymbol + discountpriceMin.ToString("F2") + " - " + currencySymbol + discountpriceMax.ToString("F2"); 318 } 319 else if (priceNotFormatted == 0){ 320 pricediscount = currencySymbol + discountpriceMin.ToString("F2"); 321 } 322323 if (!hideVatPrice){ 324 <div><small class="text-decoration-line-through opacity-85 fst-normal">@price @Translate("Incl. VAT")</small></div> 325 <small class="opacity-85 fst-normal">@pricediscount @Translate("Incl. VAT")</small> 326 } 327328329 } else { 330 if (!hideVatPrice){ 331 <small class="opacity-85 fst-normal">@price @Translate("Incl. VAT")</small> 332 } 333 } 334 } 335 } 336 </div> 337 } 338 else if (Pageview.IsVisualEditorMode) 339 { 340 <div class="alert alert-dark m-0" role="alert"> 341 <span>@Translate("No products available")</span> 342 </div> 343 } 344
Files
Name | Herunterladen | Dateityp |
---|---|---|
Datasheet-Water-Flow-Regulator.pdf | 205 KB |
Images
3D Viewer
Specification
Wasserdurchflussregler sind ideal für die Regulierung des Wasserdurchflusses und der Wasseraustrittstemperatur. Die hochwertige Konstruktion und das Design machen das Gerät zu einem der wettbewerbsfähigsten.
Max. Temperatur: 95°C
Durchflussbereich: 0 ~ 18 L / min (jeder Kreislauf)
Kreislaufanschluss: 3/8" BSP-Innengewinde
Eingang/Ausgang: 3/4" BSP-Innengewinde Polyamidrohre mit Innen- und Außenkörpern aus PA6 mit 30 % Glasfaser
Messingeinlass- und -auslassventile, die in den Körper eingesetzt sind Innere Zugstangen aus Edelstahl