Sweatshirt | zip

No. 0603

 44,25 ( 44,25 excl. VAT)

Classic sweatshirt in strong quality with high collar and zipper at neck. Neck band and half moon at neck and ribbing on sleeves and at the bottom. Unbrushed inner fabric.

Find a dealer

Classic sweatshirt in strong quality with high collar and zipper at neck. Neck band and half moon at neck and ribbing on sleeves and at the bottom. Unbrushed inner fabric.
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