Overtræksvest

Nr. 1902

kr. 0,00 (kr. 0,00 ekskl. moms)

Fluorescerende overtræksvest med elastik og lukning i siderne.
Fluorescerende overtræksvest med elastik og lukning i siderne.
  • checkFri fragt over kr. 499,00 · Info
  • check1-2 dages levering · Info
  • check14 dages fortrydelsesret · Info
Error executing template "Designs/identity_v2/ecom/product/partials/identity-part-specifications-v2.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Co3.ID.Dw.Services.ProductService.GetVariantSizeOption(IdentityProduct product, String variantId)
   at CompiledRazorTemplates.Dynamic.RazorEngine_04d160cc20f44ddf99712e3fd7b6fb92.<Execute>b__1_1(KeyValuePair`2 vo) in D:\dynamicweb.net\Solutions\id.espresso4.dk-e5\Application\Files\Templates\Designs\identity_v2\ecom\product\partials\identity-part-specifications-v2.cshtml:line 167
   at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
   at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
   at Co3.Espresso.Base.Extensions.IEnumerableExtension.<WithIndex>d__0`1.MoveNext()
   at CompiledRazorTemplates.Dynamic.RazorEngine_04d160cc20f44ddf99712e3fd7b6fb92.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 165
   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.Ecommerce.Products 12 @using Dynamicweb.Ecommerce.Products.Categories 13 @using Dynamicweb.Frontend 14 @using IdService = Co3.ID.Dw.Services; 15 16 @{ 17 var shopContext = SiteContext.CurrentSiteContext(); 18 19 Dictionary<string, string> CareSymbolsTranslated = new Dictionary<string, string>(); 20 Dictionary<string, string> CareSymbolsWashingTranslated = new Dictionary<string, string>(); 21 Category category = Dynamicweb.Ecommerce.Services.ProductCategories.GetCategoryById("CareSymbols", PageView.Current().Area.EcomLanguageId); 22 Product _dynamicwebProduct = Product.GetProductById(Model.Id, Model.VariantId, false); 23 24 string bleaching = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Bleaching"); 25 string drying = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Drying"); 26 string hangDrying = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "HangDrying"); 27 string ironing = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Ironing"); 28 string professionalCare = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "ProfessionalCare"); 29 string washing = _dynamicwebProduct.GetCategoryValue<string>("CareSymbols", "Washing"); 30 31 if (category != null) 32 { 33 foreach (Field field in category.Fields) 34 { 35 36 if (field.Id == "Washing") 37 { 38 39 foreach (FieldOption washingOption in field.FieldOptions) 40 { 41 if (washingOption.Value == washing) 42 { 43 CareSymbolsWashingTranslated[washingOption.Value] = washingOption.Name; 44 } 45 46 } 47 } 48 else 49 { 50 foreach (FieldOption option in field.FieldOptions) 51 { 52 53 if (CareSymbolsTranslated.ContainsKey(field.Id) == false) 54 { 55 if (field.Id == "Bleaching" && string.Equals(option.Value, bleaching, 56 StringComparison.OrdinalIgnoreCase) ) 57 { 58 CareSymbolsTranslated[field.Id] = option.Name; 59 } 60 if (field.Id == "Drying" && string.Equals(option.Value, drying, 61 StringComparison.OrdinalIgnoreCase) ) 62 { 63 CareSymbolsTranslated[field.Id] = option.Name; 64 } 65 if (field.Id == "HangDrying" && string.Equals(option.Value, hangDrying, 66 StringComparison.OrdinalIgnoreCase) ) 67 { 68 CareSymbolsTranslated[field.Id] = option.Name; 69 } 70 if (field.Id == "Ironing" && string.Equals(option.Value, ironing, 71 StringComparison.OrdinalIgnoreCase) ) 72 { 73 CareSymbolsTranslated[field.Id] = option.Name; 74 } 75 if (field.Id == "ProfessionalCare" && string.Equals(option.Value, professionalCare, 76 StringComparison.OrdinalIgnoreCase) ) 77 { 78 79 CareSymbolsTranslated[field.Id] = option.Name; 80 } 81 82 } 83 84 85 } 86 } 87 88 89 } 90 } 91 } 92 93 94 <div class="container-fluid"> 95 @if (shopContext == ShopType.B2C && Model.HighlightedFeatures.Any()) 96 { 97 <div class="row pb-4"> 98 <div class="col-12"> 99 <ul class="identity-spec-unordered-list mt-2 d-none d-md-flex"> 100 @foreach (string highligtedFeature in Model.HighlightedFeatures) 101 { 102 <li>@highligtedFeature</li> 103 } 104 </ul> 105 </div> 106 </div> 107 } 108 <div class="accordion identity-spec-accordion border-top w-100"> 109 @if (Model.ProductIcons.ContainsKey("Certificate") && Model.ProductIcons["Certificate"] != null && Model.ProductIcons["Certificate"].Any()) 110 { 111 <div class="border-bottom"> 112 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseCertificates"> 113 @Translate("Certificates", "Certificates") 114 </a> 115 <div id="collapseCertificates" class="collapse identity-spec-collapse identity-spec-collapse-Certificates"> 116 <div class="mb-2 small"> 117 @foreach (KeyValuePair<string, IdentityProductIcon> certificate in Model.ProductIcons["Certificate"]) 118 { 119 <div class="row mb-1"> 120 <div class="col-4"> 121 <div class="identity-spec-icon-container spec-certificate"> 122 <img class="identity-spec-icon" src="@certificate.Value.Icon"/> 123 </div> 124 </div> 125 <div class="col-8 align-self-center"> 126 <strong class="d-block">@certificate.Value.Header</strong> 127 @certificate.Value.Text 128 </div> 129 </div> 130 } 131 132 133 </div> 134 </div> 135 </div> 136 } 137 <div class="border-bottom"> 138 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseFunctionsMaterials"> 139 @Translate("Composition and Materials", "Composition & Materials") 140 </a> 141 <div id="collapseFunctionsMaterials" class="collapse identity-spec-collapse identity-spec-collapse-FunctionsMaterials"> 142 <div class="mb-2 small"> 143 <div class="row mb-1"> 144 <div class="col-4"> 145 <strong> 146 @Translate("Composition - header", "Composition") 147 </strong> 148 </div> 149 <div class="col-8"> 150 @Model.Composition 151 </div> 152 </div> 153 <div class="row mb-1"> 154 <div class="col-4"> 155 <strong> 156 @Translate("Size", "Size") 157 </strong> 158 </div> 159 <div class="col-8"> 160 @{ 161 IEnumerable<KeyValuePair<string, EspressoProduct>> variantOptionsByColor = Model.VariantCombinations.Where(vc => vc.Key.Split('.')[0] == Model.VariantId.Split('.')[0]); 162 163 164 } 165 @foreach (ElementWithIndex<KeyValuePair<string, EspressoProduct>> option in variantOptionsByColor.OrderBy(vo => 166 { 167 KeyValuePair<string, EspressoVariantOption> variantSizeObj = IdService.ProductService.Instance.GetVariantSizeOption(Model, vo.Key); 168 return variantSizeObj.Value?.SortOrder; 169 }).WithIndex()) 170 { 171 KeyValuePair<string, EspressoVariantOption> variantSizeObj = Co3.ID.Dw.Services.ProductService.Instance.GetVariantSizeOption(Model, option.Element.Key); 172 if (variantSizeObj.Value != null) 173 { 174 IdentityProduct idProduct = (IdentityProduct)option.Element.Value; 175 <span class="js-identity-spec-size" data-value="@option.Element"> 176 @if (option.Index > 0) 177 { 178 <span>, </span> 179 } 180 @idProduct.SizeVariantText 181 </span> 182 } 183 184 } 185 </div> 186 </div> 187 @foreach (AEspressoDisplayField field in Model.FieldDisplayGroups.ByName["Compositions"].Fields ) 188 { 189 if (string.IsNullOrEmpty(field.RenderedHtmlValue) == false) 190 { 191 <div class="row mb-1"> 192 <div class="col-4"> 193 <strong> 194 @field.Label 195 </strong> 196 </div> 197 <div class="col-8"> 198 @field.RenderedHtmlValue 199 </div> 200 </div> 201 } 202 } 203 @if (Model.ProductIcons.ContainsKey("Breathable") && Model.ProductIcons["Breathable"] != null && Model.ProductIcons["Breathable"].Any()) 204 { 205 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Breathable"]) 206 { 207 <div class="row mb-1"> 208 <div class="col-4"> 209 <div class="identity-spec-icon-container spec-certificate"> 210 <img class="identity-spec-icon" src="@field.Value.Icon"/> 211 </div> 212 </div> 213 <div class="col-8 align-self-center"> 214 <strong class="d-block">@field.Value.Header</strong> 215 @field.Value.Text 216 </div> 217 </div> 218 } 219 } 220 @if (Model.ProductIcons.ContainsKey("Waterproof") && Model.ProductIcons["Waterproof"] != null && Model.ProductIcons["Waterproof"].Any()) 221 { 222 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Waterproof"]) 223 { 224 <div class="row mb-1"> 225 <div class="col-4"> 226 <div class="identity-spec-icon-container spec-certificate"> 227 <img class="identity-spec-icon" src="@field.Value.Icon"/> 228 </div> 229 </div> 230 <div class="col-8 align-self-center"> 231 <strong class="d-block">@field.Value.Header</strong> 232 @field.Value.Text 233 </div> 234 </div> 235 } 236 } 237 @if (Model.ProductIcons.ContainsKey("Other") && Model.ProductIcons["Other"] != null && Model.ProductIcons["Other"].Any()) 238 { 239 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Other"]) 240 { 241 <div class="row mb-1"> 242 <div class="col-4"> 243 <div class="identity-spec-icon-container spec-certificate"> 244 <img class="identity-spec-icon" src="@field.Value.Icon"/> 245 </div> 246 </div> 247 <div class="col-8 align-self-center"> 248 <strong class="d-block">@field.Value.Header</strong> 249 @field.Value.Text 250 </div> 251 </div> 252 } 253 } 254 @if (Model.ProductIcons.ContainsKey("Collar") && Model.ProductIcons["Collar"] != null && Model.ProductIcons["Collar"].Any()) 255 { 256 foreach (KeyValuePair<string, IdentityProductIcon> field in Model.ProductIcons["Collar"]) 257 { 258 <div class="row mb-1"> 259 <div class="col-4"> 260 <div class="identity-spec-icon-container spec-certificate"> 261 <img class="identity-spec-icon" src="@field.Value.Icon"/> 262 </div> 263 </div> 264 <div class="col-8 align-self-center"> 265 <strong class="d-block">@field.Value.Header</strong> 266 @field.Value.Text 267 </div> 268 </div> 269 } 270 } 271 </div> 272 </div> 273 </div> 274 <script>console.log(@JsonService.Instance.ToJson(Model.FieldDisplayGroups));</script> 275 @if (Model.FieldDisplayGroups.ByName["Care_Symbols"].Fields.Any()) 276 { 277 <div class="border-bottom"> 278 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseCare_Symbols"> 279 @Translate("Washing", "Washing") 280 </a> 281 <div id="collapseCare_Symbols" class="collapse identity-spec-collapse identity-spec-collapse-Care_Symbols mb-1"> 282 <div class="mb-2 small"> 283 <div class="row"> 284 @foreach (AEspressoDisplayField field in Model.FieldDisplayGroups.ByName["Care_Symbols"].Fields) 285 { 286 string icon = string.Format("files/images/products/WashIcon/{0}.svg", field.RenderedHtmlValue.Replace(",", string.Empty)); 287 <div class="col-6 col-md-4"> 288 <div class="row mb-1"> 289 <div class="col-3 col-md-2"> 290 <div class="identity-spec-icon-container"> 291 <img class="identity-spec-icon" src="@icon"/> 292 </div> 293 </div> 294 <div class="col-9 col-md-10 align-self-center"> 295 @if (field.Id == "ProductCategory|CareSymbols|Bleaching") 296 { 297 if(CareSymbolsTranslated.ContainsKey("Bleaching")){ 298 @CareSymbolsTranslated["Bleaching"] 299 } 300 } 301 @if (field.Id == "ProductCategory|CareSymbols|Drying") 302 { 303 if (CareSymbolsTranslated.ContainsKey("Drying")) 304 { 305 @CareSymbolsTranslated["Drying"] 306 } 307 } 308 @if (field.Id == "ProductCategory|CareSymbols|Ironing") 309 { 310 if (CareSymbolsTranslated.ContainsKey("Ironing")) 311 { 312 @CareSymbolsTranslated["Ironing"] 313 } 314 } 315 @if (field.Id == "ProductCategory|CareSymbols|ProfessionalCare") 316 { 317 if (CareSymbolsTranslated.ContainsKey("ProfessionalCare")) 318 { 319 @CareSymbolsTranslated["ProfessionalCare"] 320 } 321 } 322 @if (field.Id == "ProductCategory|CareSymbols|Washing") 323 { 324 if (CareSymbolsWashingTranslated.ContainsKey(field.RenderedHtmlValue.Trim())) 325 { 326 @CareSymbolsWashingTranslated[field.RenderedHtmlValue.Trim()] 327 } 328 329 } 330 @if (field.Id == "ProductCategory|CareSymbols|HangDrying") 331 { 332 if (CareSymbolsTranslated.ContainsKey("HangDrying")) 333 { 334 @CareSymbolsTranslated["HangDrying"] 335 } 336 } 337 </div> 338 </div> 339 </div> 340 } 341 </div> 342 </div> 343 </div> 344 </div> 345 } 346 347 @if (Model.RecommendedTransferTypes.Any()) 348 { 349 <div class="border-bottom"> 350 <a class="h4 d-block py-2 mb-0 spec-toggle collapsed" data-toggle="collapse" data-target="#collapseTransfer_types"> 351 @Translate("ecom - Recommended Transfer Types - Header", "Anbefalet transfer type") 352 </a> 353 <div id="collapseTransfer_types" class="collapse identity-spec-collapse identity-spec-collapse-Transfer_types mb-1"> 354 <div class="mb-2 small"> 355 @foreach (FieldOption transferType in Model.RecommendedTransferTypes) 356 { 357 <div class="row mb-1"> 358 <div class="col-4"> 359 <i class="material-icons mr-1">check</i> @transferType.Name 360 </div> 361 </div> 362 } 363 </div> 364 </div> 365 </div> 366 } 367 368 </div> 369 </div>

Corporate wear

More than sportswear

Passion for shirts

Made to last

Tidløst Corporate Wear

Corporate Wear med et klassisk
og tidløst design forfinet
siden 1983

Ingen kompromiser

Skabt til at kunne bruges igen
og igen - holder pasform
og farve

Fælles identitet

Tøj der understreger en fælles
identitet og styrker
fællesskabet

Find jeres farve

Vælg mellem mere end 60+
farver - der er også en
farve til jer

keyboard_arrow_up