close

PRO Wear sweatshirt | kontrast

No. 0362

kr 456,00 (kr 456,00 exkl. moms)

Extra slitstark två-färgad sweatshirt med rund hals. Dubbell stickningar och ribb vid hals, ärmar och nederkant. Mjuk borstad insida. Sweatshirten har genomgått en förkrympningspro...Visa mer
Error executing template "Designs/identity_v2/ecom/product/partials/add-to-cart.cshtml"
System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Co3.ID.Dw.Models.Frontend.Ecommerce.IdentityProduct.get_ImagePrimary()
   at CompiledRazorTemplates.Dynamic.RazorEngine_e0a47bdc230843b6a7a9a9423df32970.<>c__DisplayClass0_0.<VariantOption>b__0(TextWriter __razor_helper_writer) in E:\Solutions\id.test002.webtester.dk\Files\Templates\Designs\identity_v2\ecom\product\partials\add-to-cart.cshtml:line 193
   at CompiledRazorTemplates.Dynamic.RazorEngine_e0a47bdc230843b6a7a9a9423df32970.Execute() in E:\Solutions\id.test002.webtester.dk\Files\Templates\Designs\identity_v2\ecom\product\partials\add-to-cart.cshtml:line 126
   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<Co3.ID.Dw.Models.Frontend.Ecommerce.IdentityProduct> 2 @using Co3.Espresso.Base.Extensions 3 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce 4 @using Co3.Espresso.Website.Models.FrontEnd.Settings 5 @using Co3.ID.Dw.Helpers 6 @using Co3.ID.Dw.Models.Frontend.Ecommerce 7 @using Dynamicweb.Ecommerce.Common 8 @using Dynamicweb.Ecommerce.Variants 9 @using Dynamicweb.Ecommerce.Products 10 @using Dynamicweb.Frontend 11 @using Dynamicweb.Rendering 12 @using Dynamicweb.Security.UserManagement 13 @using ProductService = Co3.ID.Dw.Services.ProductService 14 @using System.Web 15 16 @{ 17 var shopContext = SiteContext.CurrentSiteContext(); 18 string alternativeAction = string.IsNullOrEmpty(PageView.Current().Area.Item["EcommerceAlternativeCallToAction"]?.ToString()) == false ? PageView.Current().Area.Item["EcommerceAlternativeCallToAction"].ToString() : string.Empty; 19 20 21 } 22 23 24 25 <form action="/system/data/cart" class="e-product-form js-e-product-form js-e-product-form-addtocart pb-1" method="post"> 26 <input name="CartCmd" type="hidden" value="Add"> 27 <input name="ProductID" type="hidden" value="@Model.Id"> 28 <input name="VariantID" type="hidden" value="@Model.VariantId"> 29 <input name="Quantity" type="hidden" value="1"> 30 <input name="Redirect" type="hidden" value=""> 31 <input name="Name" type="hidden" value="@Model.Name"> 32 <input name="Number" type="hidden" value="@Model.Number"> 33 <input name="Price" type="hidden" value="@Model.Price.Value.ToJavaScript()"> 34 <input name="CurrencyCode" type="hidden" value="@Model.Price.CurrencyCode"> 35 36 37 @if (Model.VariantGroups.Any()) 38 { 39 <div class=""> 40 @foreach (KeyValuePair<string, EspressoVariantGroup> variantGroup in Model.VariantGroups) 41 { 42 bool isColorGroup = variantGroup.Value.Id == Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID; 43 string groupClassNameAppend = isColorGroup ? "color" : "size"; 44 int variantTake = 7; 45 46 47 string variantInputFieldName = string.Format("{0}_{1}", Model.Id, variantGroup.Value.Id); 48 <div class="form-group js-e-product-form-variant-form-group e-product-form-variant-form-group-@groupClassNameAppend js-e-product-form-variant-form-group-@groupClassNameAppend" data-auto-select="true" data-variant-take="@variantTake" @(((shopContext == ShopType.B2B || shopContext == ShopType.CustomerShop || !PageView.Current().IsBasketEnabled()) && groupClassNameAppend == "size") ? "hidden" : string.Empty)> 49 <label class="form-control-label d-flex font-weight-semibold small @(isColorGroup == false ? "d-flex justify-content-between" : string.Empty)"> 50 @Translate(string.Format("eCom - Product Details - variant header - {0}", variantGroup.Value.Name), variantGroup.Value.Name) 51 @if (isColorGroup == true) 52 { 53 <span class="js-identity-selected-color-variant-text">@Model.ColorVariantText</span> 54 55 if (Model.SizeGuidePageId > 0) 56 { 57 if (shopContext == ShopType.B2B || shopContext == ShopType.CustomerShop) 58 { 59 if (Model.SizeGuidePageId > 0 || Model.BrandCode == "PRIVATELAB") 60 { 61 <a class="ml-auto text-muted font-weight-normal link-underline" data-toggle="modal" data-target="#identity-size-guide-modal"> 62 @Translate("eCom - Product Details - size guide -link -text", "Størrelsesguide") 63 </a> 64 } 65 } 66 else 67 { 68 <a class="ml-auto text-muted font-weight-normal link-underline" data-toggle="modal" data-target="#identity-size-guide-modal"> 69 @Translate("eCom - Product Details - size guide -link -text", "Størrelsesguide") 70 </a> 71 } 72 73 } 74 75 } 76 </label> 77 <div class="identity-variant-group d-flex"> 78 @{ 79 int variantCount = variantGroup.Value.Options.Count; 80 bool shouldWrapLast = variantCount > variantTake; 81 int variantIndex = 0; 82 string collapseId = string.Format("collapseExtraVariants_{0}", variantGroup.Value.Name); 83 84 IOrderedEnumerable<KeyValuePair<string, EspressoVariantOption>> variantGroupOptions = variantGroup.Value.Options.OrderBy(o => o.Key); 85 86 if (isColorGroup) 87 { 88 variantGroupOptions = variantGroup.Value.Options.OrderByDescending(o => o.Value.Id == variantGroup.Value.SelectedOptionId); 89 } 90 else 91 { 92 Dictionary<string, int> variantGroupOptionSortOrder = ProductService.Instance.GetVariantGroupOptionSortOrder(variantGroup.Value.Name); 93 variantGroupOptions = variantGroup.Value.Options.OrderBy(o => o.Value.Id != null && variantGroupOptionSortOrder.ContainsKey(o.Value.Id) ? variantGroupOptionSortOrder[o.Value.Id] : 99); 94 } 95 } 96 97 98 @foreach (KeyValuePair<string, EspressoVariantOption> variantOption in variantGroupOptions) 99 { 100 string variantInputFieldId = string.Format("{0}_{1}", variantInputFieldName, variantOption.Value.Id); 101 bool isSelected = variantOption.Value.Id == variantGroup.Value.SelectedOptionId; 102 string lastVariantIdBeforeWrap = string.Empty; 103 104 105 if (shouldWrapLast && variantIndex == variantTake) 106 { 107 lastVariantIdBeforeWrap = variantOption.Key; 108 109 <label class="custom-control custom-radio identity-variant-select-option js-identity-variant-select-option"> 110 <span class="custom-control-description disabled"> 111 <span class="@(isColorGroup ? "identity-variant-select-option-color" : "identity-variant-select-option-generic") js-identity-extra-variants-toggler" data-toggle="collapse" href="#@collapseId" role="button" aria-expanded="false"> 112 <span class="js-variant-hidden-count" data-default="@(variantCount - variantTake)">+@(variantCount - variantTake)</span> 113 </span> 114 </span> 115 </label> 116 117 @VariantOption(isColorGroup, isSelected, variantInputFieldId, variantInputFieldName, variantOption, true) 118 119 @:</div> 120 @:<div class="collapse js-identity-extra-variants-collapse" id="@collapseId"> 121 @:<div class="identity-variant-group d-flex"> 122 } 123 124 if (variantOption.Key != lastVariantIdBeforeWrap) 125 { 126 @VariantOption(isColorGroup, isSelected, variantInputFieldId, variantInputFieldName, variantOption) 127 } 128 129 if (shouldWrapLast && (variantIndex + 1) == variantCount) 130 { 131 <label class="custom-control custom-radio identity-variant-select-option"> 132 <span class="custom-control-description disabled"> 133 <span class="@(isColorGroup ? "identity-variant-select-option-color" : "identity-variant-select-option-generic")" data-toggle="collapse" href="#@collapseId" role="button" aria-expanded="false"> 134 <span class="variant-close-toggle"></span> 135 </span> 136 </span> 137 </label> 138 @:</div> 139 } 140 variantIndex++; 141 } 142 </div> 143 </div> 144 } 145 146 </div> 147 } 148 @if (PageView.Current().IsBasketEnabled()) 149 { 150 if (shopContext == ShopType.B2C) 151 { 152 <button class="btn btn-primary btn-lg btn-block position-relative" type="submit"> 153 @Translate("eCom Product - Add To Cart - Button", "Add to cart") 154 </button> 155 } 156 } 157 else 158 { 159 @alternativeAction 160 } 161 162 </form> 163 164 165 @helper VariantOption(bool isColorGroup, bool isSelected, string variantInputFieldId, string variantInputFieldName, KeyValuePair<string, EspressoVariantOption> variantOption, bool boolHide = false) 166 { 167 <label class="custom-control custom-radio identity-variant-select-option @(boolHide == true ? "js-identity-variant-select-option-hidden d-none" : string.Empty)"> 168 <input class="custom-control-input js-e-product-form-variant-group-input required" id="@variantInputFieldId" name="@variantInputFieldName" title="@HttpUtility.HtmlAttributeEncode(variantOption.Value.Name)" data-name="@HttpUtility.HtmlAttributeEncode(variantOption.Value.Name)" type="radio" value="@variantOption.Value.Id" @(isSelected ? "checked" : string.Empty)> 169 @* 170 @if (isColorGroup) 171 { 172 173 } 174 else 175 { 176 string variantComboId = string.Format("{0}.{1}", Model.VariantGroups[Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID].SelectedOptionId, variantOption.Value.Id); 177 IdentityProduct idProduct = ProductService.Instance.GetVariantByComboId(Model, variantComboId); 178 <input class="custom-control-input js-e-product-form-variant-group-input required" id="@variantInputFieldId" name="@variantInputFieldName" title="@variantOption.Value.Name" data-name="@variantOption.Value.Name" type="radio" value="@variantOption.Value.Id" @(isSelected ? "checked" : string.Empty) @(idProduct.Stock.Quantity> 0 ? string.Empty : "disabled")> 179 }*@ 180 <span class="custom-control-description"> 181 <div class="identity-corner-brackets-container identity-corner-brackets-all border-primary is-corner-thumb p-0"> 182 <div class="identity-corner-brackets-wrapper border-primary"> 183 184 185 186 187 188 @if (isColorGroup) 189 { 190 EspressoVariantGroup sizeVariantGroup = Model.VariantGroups.FirstOrDefault(vg => vg.Key != Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID).Value; 191 string variantComboId = string.Format("{0}.{1}", variantOption.Value.Id, sizeVariantGroup.SelectedOptionId); 192 IdentityProduct idProduct = ProductService.Instance.GetVariantByComboId(Model, variantComboId); 193 EspressoProductImageUrl imageUrl = idProduct?.ImagePrimary; 194 195 if (imageUrl != null) 196 { 197 <span class="identity-variant-select-option-color js-variant-color-image" style="background-image: url(@imageUrl.Small);" data-image="@imageUrl.Small" data-name="@variantOption.Value.Name" data-toggle="tooltip" data-placement="top" title="@variantOption.Value.Name"></span> 198 } 199 else 200 { 201 <span class="identity-variant-select-option-generic"> 202 <span>@variantOption.Value.Name</span> 203 </span> 204 } 205 } 206 else 207 { 208 <span class="identity-variant-select-option-generic"> 209 <span class="js-variant-size-text">@variantOption.Value.Name</span> 210 </span> 211 } 212 213 214 </div> 215 </div> 216 </span> 217 </label> 218 } 219
Extra slitstark två-färgad sweatshirt med rund hals. Dubbell stickningar och ribb vid hals, ärmar och nederkant. Mjuk borstad insida. Sweatshirten har genomgått en förkrympningsprocess vid mycket höga temperaturer, både före och efter infärgningen, för extra stabilitet och lång livstid.
Mer ansvarsfull
PRO Wear sweatshirt | kontrast
PRO Wear sweatshirt | kontrast
PRO Wear sweatshirt | kontrast
PRO Wear sweatshirt | kontrast

Förläng livslängden för Corporate Wear

Vi har samlat tio goda tvättråd om hur de kan bidra till att förlänga produktens livslängd och samtidigt bidra till att göra skillnad för miljön.

Läs alla 10 tvättråden


Ikke noget tøj, der matcher jeres behov?

Bare rolig. Med vores Private Label løsning har I mulighed for at designe jeres helt egne unikke styles. Vi hjælper jer gennem hele processen fra idé til færdigt produkt.

Læs om Private Label

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

keyboard_arrow_up