PRO Wear T-shirt | l/ä

No. 0311

kr 212,50 (kr 212,50 ekskl. moms)

Slitstark T-shirt med långa ärmar. Fyra-dubbel ribbstickning, nack- och axelband. Med halvmåne i nacken. T-shirten har genomgått en förkrympningsprocess vid mycket höga temperature...Visa mer

Hitta en återförsäljare

Slitstark T-shirt med långa ärmar. Fyra-dubbel ribbstickning, nack- och axelband. Med halvmåne i nacken. T-shirten har genomgått en förkrympningsprocess vid mycket höga temperaturer, båda före och efter indfärgningen, för extra stabilitet och lång livstid. Ribb på ärmarna.
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>

Liknande produkter

Populäre produkter

Corporate Wear

More than sportswear

Passion for shirts

Made to last

Tidlöst Corporate Wear

Corporate Wear med en klassisk
och tidlös design som har förfinats
sedan 1983

Gemensam identitet

Kläder som betonar en
gemensam identitet
och stärker

Hitta er färg

Välj mellan mer än 60
olika färger – det finns en
färg för er också

Inga kompromisser

Skapad för att kunna användas om
och om igen – behåller passformen
och färgen

Rapport om företagens sociala ansvar, jfr § 99a i den danska bokföringslagen. BCI cotton ID® ansvarsrapport 2022/2023. Läs här

keyboard_arrow_up