GEYSER stretch hoodie | women

No. G11080

 67,05 ( 67,05 excl. VAT)

Sporty zip hoodie in a soft, stretch fabric with a brushed interior, perfect for active lifestyles and working out. Quick-dry comfort and YKK zips on the front and side pockets. Re...Show more

Find a dealer

Sporty zip hoodie in a soft, stretch fabric with a brushed interior, perfect for active lifestyles and working out. Quick-dry comfort and YKK zips on the front and side pockets. Refelctive print on the front and back.
Error executing template "Designs/identity_v2/ecom/product/partials/identity-part-specifications-v2.cshtml"
System.ArgumentNullException: Value cannot be null.
Parameter name: values
   at System.String.Join(String separator, IEnumerable`1 values)
   at Co3.ID.Dw.Models.Frontend.Ecommerce.IdentityProduct.get_Composition() in C:\Data\Development\git\id-dev\Co3.ID.Dynamicweb\Models\Frontend\Ecommerce\IdentityProduct.cs:line 616
   at CompiledRazorTemplates.Dynamic.RazorEngine_3498285b4a4c4133a66a9756950ad43e.Execute() in D:\dynamicweb.net\Solutions\id.espresso4.dk-e5\Application\Files\Templates\Designs\identity_v2\ecom\product\partials\identity-part-specifications-v2.cshtml:line 151
   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<IdentityProduct> 2 @using Co3.Espresso.Base.Extensions 3 @using Co3.Espresso.Base.Models 4 @using Co3.Espresso.Website.Models 5 @using Co3.Espresso.Website.Models.FrontEnd 6 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce 7 @using Co3.Espresso.Website.Models.FrontEnd.Settings 8 @using Co3.Espresso.Website.Services 9 @using Co3.ID.Dw.Helpers 10 @using Co3.ID.Dw.Models.Frontend.Ecommerce 11 @using Dynamicweb 12 @using Dynamicweb.Ecommerce.Products 13 @using Dynamicweb.Ecommerce.Products.Categories 14 @using Dynamicweb.Frontend 15 @using IdService = Co3.ID.Dw.Services; 16 17 @{ 18 var shopContext = SiteContext.CurrentSiteContext(); 19 20 string[] genders = Model.Gender.Split(','); 21 22 Dictionary<string, string> CareSymbolsTranslated = new Dictionary<string, string>(); 23 Dictionary<string, string> CareSymbolsWashingTranslated = new Dictionary<string, string>(); 24 Category category = Dynamicweb.Ecommerce.Services.ProductCategories.GetCategoryById("CareSymbols", PageView.Current().Area.EcomLanguageId); 25 Product _dynamicwebProduct = Product.GetProductById(Model.Id, Model.VariantId, false); 26 Dictionary<string, int> sortCareSymbols = new Dictionary<string, int>(); 27 28 string bleaching = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Bleaching"); 29 string drying = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Drying"); 30 string hangDrying = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "HangDrying"); 31 string ironing = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Ironing"); 32 string professionalCare = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "ProfessionalCare"); 33 string washing = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Washing"); 34 35 if (category != null) 36 { 37 foreach (Field field in category.Fields) 38 { 39 sortCareSymbols.Add(field.Id, field.SortOrder); 40 if (field.Id == "Washing") 41 { 42 43 foreach (FieldOption washingOption in field.FieldOptions) 44 { 45 if (washingOption.Value == washing) 46 { 47 CareSymbolsWashingTranslated[washingOption.Value] = washingOption.Name; 48 } 49 50 } 51 } 52 else 53 { 54 foreach (FieldOption option in field.FieldOptions) 55 { 56 if (CareSymbolsTranslated.ContainsKey(field.Id) == false) 57 { 58 if (field.Id == "Bleaching" && string.Equals(option.Value, bleaching, 59 StringComparison.OrdinalIgnoreCase) ) 60 { 61 CareSymbolsTranslated[field.Id] = option.Name; 62 } 63 if (field.Id == "Drying" && string.Equals(option.Value, drying, 64 StringComparison.OrdinalIgnoreCase) ) 65 { 66 CareSymbolsTranslated[field.Id] = option.Name; 67 } 68 if (field.Id == "HangDrying" && string.Equals(option.Value, hangDrying, 69 StringComparison.OrdinalIgnoreCase) ) 70 { 71 CareSymbolsTranslated[field.Id] = option.Name; 72 } 73 if (field.Id == "Ironing" && string.Equals(option.Value, ironing, 74 StringComparison.OrdinalIgnoreCase) ) 75 { 76 CareSymbolsTranslated[field.Id] = option.Name; 77 } 78 if (field.Id == "ProfessionalCare" && string.Equals(option.Value, professionalCare, 79 StringComparison.OrdinalIgnoreCase) ) 80 { 81 82 CareSymbolsTranslated[field.Id] = option.Name; 83 } 84 85 } 86 87 88 } 89 } 90 91 92 } 93 } 94 if (Model.ShowInProductList == false) 95 { 96 return; 97 } 98 } 99 100 101 <div class="container-fluid"> 102 @if (shopContext == ShopType.B2C && Model.HighlightedFeatures.Any()) 103 { 104 <div class="row pb-4"> 105 <div class="col-12"> 106 <ul class="font-weight-normal mb-0 mt-2 small pl-2" style="margin-left: -5px;"> 107 @foreach (string highligtedFeature in Model.HighlightedFeatures) 108 { 109 <li class="pl-0">@highligtedFeature</li> 110 } 111 </ul> 112 </div> 113 </div> 114 } 115 <div class="accordion identity-spec-accordion border-top w-100"> 116 @if (Model.ProductIcons.ContainsKey("Certificate") && Model.ProductIcons["Certificate"] != null && Model.ProductIcons["Certificate"].Any()) 117 { 118 <div class="border-bottom"> 119 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseCertificates"> 120 @Translate("Certificates", "Certificates") 121 </a> 122 <div id="collapseCertificates" class="collapse identity-spec-collapse identity-spec-collapse-Certificates"> 123 <div class="mb-2 small"> 124 @foreach (KeyValuePair<string, IdentityProductIcon> certificate in Model.ProductIcons["Certificate"]) 125 { 126 <div class="row mb-1"> 127 <div class="col-4"> 128 <div class="identity-spec-icon-container spec-certificate"> 129 <img class="identity-spec-icon" src="@certificate.Value.Icon"/> 130 </div> 131 </div> 132 <div class="col-8 align-self-center"> 133 <strong class="d-block">@certificate.Value.Header</strong> 134 @certificate.Value.Text 135 </div> 136 </div> 137 } 138 139 140 </div> 141 </div> 142 </div> 143 } 144 145 <div class="border-bottom"> 146 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseFunctionsMaterials"> 147 @Translate("Composition and Materials", "Composition & Materials") 148 </a> 149 <div id="collapseFunctionsMaterials" class="collapse identity-spec-collapse identity-spec-collapse-FunctionsMaterials"> 150 <div class="mb-2 small"> 151 @if (!string.IsNullOrEmpty(Model.Composition)) 152 { 153 <div class="row mb-1"> 154 <div class="col-4"> 155 <strong> 156 @Translate("Composition - header", "Composition") 157 </strong> 158 </div> 159 <div class="col-8"> 160 @Model.Composition 161 </div> 162 </div> 163 } 164 165 <div class="row mb-1"> 166 <div class="col-4"> 167 <strong> 168 @Translate("Size", "Size") 169 </strong> 170 </div> 171 <div class="col-8"> 172 @{ 173 IEnumerable<KeyValuePair<string, EspressoProduct>> variantOptionsByColor = Model.VariantCombinations.Where(vc => vc.Key.Split('.')[0] == Model.VariantId.Split('.')[0]); 174 } 175 @foreach (ElementWithIndex<KeyValuePair<string, EspressoProduct>> option in variantOptionsByColor.OrderBy(vo => 176 { 177 KeyValuePair<string, EspressoVariantOption> variantSizeObj = IdService.ProductService.Instance.GetVariantSizeOption(Model, vo.Key); 178 return variantSizeObj.Value?.SortOrder; 179 }).WithIndex()) 180 { 181 KeyValuePair<string, EspressoVariantOption> variantSizeObj = Co3.ID.Dw.Services.ProductService.Instance.GetVariantSizeOption(Model, option.Element.Key); 182 if (variantSizeObj.Value != null) 183 { 184 IdentityProduct idProduct = (IdentityProduct)option.Element.Value; 185 <span class="js-identity-spec-size" data-value="@option.Element"> 186 @if (option.Index > 0) 187 { 188 <span>, </span> 189 } 190 @idProduct.SizeVariantText 191 </span> 192 } 193 194 } 195 </div> 196 </div> 197 @foreach (AEspressoDisplayField field in Model.FieldDisplayGroups.ByName["Compositions"].Fields) 198 { 199 if (string.IsNullOrEmpty(field.RenderedHtmlValue.Trim()) == false) 200 { 201 <div class="row mb-1"> 202 <div class="col-4"> 203 <strong> 204 @field.Label 205 </strong> 206 </div> 207 <div class="col-8"> 208 @field.RenderedHtmlValue 209 </div> 210 </div> 211 } 212 } 213 @if (Model.ProductIcons.ContainsKey("Breathable") && Model.ProductIcons["Breathable"] != null && Model.ProductIcons["Breathable"].Any()) 214 { 215 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Breathable"]) 216 { 217 if (string.IsNullOrEmpty(field.Value.Text) == false) 218 { 219 <div class="row mb-1"> 220 <div class="col-4"> 221 <div class="identity-spec-icon-container spec-certificate"> 222 <img class="identity-spec-icon" src="@field.Value.Icon"/> 223 </div> 224 </div> 225 <div class="col-8 align-self-center"> 226 <strong class="d-block">@field.Value.Header</strong> 227 @field.Value.Text 228 </div> 229 </div> 230 } 231 232 } 233 } 234 @if (Model.ProductIcons.ContainsKey("Waterproof") && Model.ProductIcons["Waterproof"] != null && Model.ProductIcons["Waterproof"].Any()) 235 { 236 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Waterproof"]) 237 { 238 if (string.IsNullOrEmpty(field.Value.Text) == false) 239 { 240 <div class="row mb-1"> 241 <div class="col-4"> 242 <div class="identity-spec-icon-container spec-certificate"> 243 <img class="identity-spec-icon" src="@field.Value.Icon"/> 244 </div> 245 </div> 246 <div class="col-8 align-self-center"> 247 <strong class="d-block">@field.Value.Header</strong> 248 @field.Value.Text 249 </div> 250 </div> 251 } 252 } 253 } 254 @if (Model.ProductIcons.ContainsKey("Other") && Model.ProductIcons["Other"] != null && Model.ProductIcons["Other"].Any()) 255 { 256 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Other"]) 257 { 258 if (string.IsNullOrEmpty(field.Value.Text) == false) 259 { 260 <div class="row mb-1"> 261 <div class="col-4"> 262 <div class="identity-spec-icon-container spec-certificate"> 263 <img class="identity-spec-icon" src="@field.Value.Icon"/> 264 </div> 265 </div> 266 <div class="col-8 align-self-center"> 267 <strong class="d-block">@field.Value.Header</strong> 268 @field.Value.Text 269 </div> 270 </div> 271 } 272 } 273 } 274 @if (Model.ProductIcons.ContainsKey("Collar") && Model.ProductIcons["Collar"] != null && Model.ProductIcons["Collar"].Any()) 275 { 276 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Collar"]) 277 { 278 if (string.IsNullOrEmpty(field.Value.Text) == false) 279 { 280 <div class="row mb-1"> 281 <div class="col-4"> 282 <div class="identity-spec-icon-container spec-certificate"> 283 <img class="identity-spec-icon" src="@field.Value.Icon"/> 284 </div> 285 </div> 286 <div class="col-8 align-self-center"> 287 <strong class="d-block">@field.Value.Header</strong> 288 @field.Value.Text 289 </div> 290 </div> 291 } 292 } 293 } 294 295 296 @if (genders.Any(g => g == "CHILD")) 297 { 298 <div class="row mb-1"> 299 <div class="col-4"> 300 <div class="identity-spec-icon-container spec-certificate"> 301 <img class="identity-spec-icon" src="/Files/Images/products/FeatureIcon/CHILD.svg"/> 302 </div> 303 </div> 304 <div class="col-8 align-self-center"> 305 <strong class="d-block">@Translate("Identity - Feature Icon - Header - Gender - Child", "Kids")</strong> 306 @Translate("Identity - Feature Icon - Text - Gender - Child", "Produktet er tilpasset børns aktive hverdag, og er designet uden frithængende snore.") 307 </div> 308 </div> 309 } 310 </div> 311 </div> 312 </div> 313 314 @if (Model.FieldDisplayGroups.ByName["Care_Symbols"].Fields.Any()) 315 { 316 <div class="border-bottom"> 317 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseCare_Symbols"> 318 @Translate("Washing", "Washing") 319 </a> 320 <div id="collapseCare_Symbols" class="collapse identity-spec-collapse identity-spec-collapse-Care_Symbols mb-1"> 321 <div class="mb-2 small"> 322 <div class="row"> 323 @foreach (AEspressoDisplayField field in Model.FieldDisplayGroups.ByName["Care_Symbols"].Fields.OrderBy(f => 324 { 325 string fieldId = f.Id.Split('|')[2]; 326 return sortCareSymbols[fieldId]; 327 }) ) 328 { 329 string icon = string.Format("files/images/products/WashIcon/{0}.svg", field.RenderedHtmlValue.Replace(",", string.Empty)); 330 <div class="col-6 col-md-4"> 331 <div class="row mb-1"> 332 <div class="col-3 col-md-2"> 333 <div class="identity-spec-icon-container"> 334 <img class="identity-spec-icon" src="@icon"/> 335 </div> 336 </div> 337 <div class="col-9 col-md-10 align-self-center"> 338 @if (field.Id == "ProductCategory|CareSymbols|Bleaching") 339 { 340 if(CareSymbolsTranslated.ContainsKey("Bleaching")){ 341 @CareSymbolsTranslated["Bleaching"] 342 } 343 } 344 @if (field.Id == "ProductCategory|CareSymbols|Drying") 345 { 346 if (CareSymbolsTranslated.ContainsKey("Drying")) 347 { 348 @CareSymbolsTranslated["Drying"] 349 } 350 } 351 @if (field.Id == "ProductCategory|CareSymbols|Ironing") 352 { 353 if (CareSymbolsTranslated.ContainsKey("Ironing")) 354 { 355 @CareSymbolsTranslated["Ironing"] 356 } 357 } 358 @if (field.Id == "ProductCategory|CareSymbols|ProfessionalCare") 359 { 360 if (CareSymbolsTranslated.ContainsKey("ProfessionalCare")) 361 { 362 @CareSymbolsTranslated["ProfessionalCare"] 363 } 364 } 365 @if (field.Id == "ProductCategory|CareSymbols|Washing") 366 { 367 if (CareSymbolsWashingTranslated.ContainsKey(field.RenderedHtmlValue.Trim())) 368 { 369 @CareSymbolsWashingTranslated[field.RenderedHtmlValue.Trim()] 370 } 371 372 } 373 @if (field.Id == "ProductCategory|CareSymbols|HangDrying") 374 { 375 if (CareSymbolsTranslated.ContainsKey("HangDrying")) 376 { 377 @CareSymbolsTranslated["HangDrying"] 378 } 379 } 380 </div> 381 </div> 382 </div> 383 } 384 </div> 385 </div> 386 </div> 387 </div> 388 } 389 390 @if (Model.RecommendedTransferTypes.Any()) 391 { 392 <div class="border-bottom"> 393 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseTransfer_types"> 394 @Translate("ecom - Recommended Transfer Types - Header", "Anbefalet transfer type") 395 </a> 396 <div id="collapseTransfer_types" class="collapse identity-spec-collapse identity-spec-collapse-Transfer_types mb-1"> 397 <div class="mb-2 small"> 398 @foreach (FieldOption transferType in Model.RecommendedTransferTypes) 399 { 400 string imagePath = $"/Files/Images/products/FeatureIcon/{transferType.Value}.png"; 401 string fullPath = Context.Current.Server.MapPath(imagePath); 402 403 if (System.IO.File.Exists(fullPath) == true) 404 { 405 <div class="row mb-1"> 406 <div class="col-4"> 407 <div class=""> 408 <img class="img-fluid" src="@imagePath"/> 409 </div> 410 </div> 411 <div class="col-8 align-self-center"> 412 <strong class="d-block">@transferType.Name</strong> 413 <p>@Translate($"Identity - TransferType - Text - {transferType.Value}", transferType.Value)</p> 414 </div> 415 </div> 416 } 417 else 418 { 419 <div class="row mb-1"> 420 <div class="col-12"> 421 <i class="material-icons mr-1">check</i> @transferType.Name<br> 422 <p>@Translate($"Identity - TransferType - Text - {transferType.Value}", transferType.Value)</p> 423 </div> 424 </div> 425 } 426 427 428 } 429 </div> 430 </div> 431 </div> 432 } 433 434 </div> 435 </div>

Similar products

Popular products

Corporate wear

More than sportswear

Passion for shirts

Made to last

Timeless Corporate Wear

Corporate Wear with a classic
and timeless design, refined
since 1983

Common identity

Clothes that highlight a common
identity and promote a sense
of community

Find your colour

Choose from 60+ colours
there is definitely one
for you

No compromise

Designed to be worn again
and again – keeps its shape
and colour

Report on CSR, cf. Section 99 a" of the Danish Financial Statements Act. BCI cotton ID® Responsibility report 2022/2023. View here

keyboard_arrow_up