Dam

PRO Wear T-shirt | light

No. 0310

Dam

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

Extra slitstark T-shirt i lättare tyg . Fyra-lagers ribbsticking, nack-och axelband. Med halvmåne i nacken. T-shirten har genomgått en förkrympnings process vid mycket höga tempera...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_ad46cbb7249249af848b19b4ac973328.<>c__DisplayClass0_0.<VariantOption>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\ecom\product\partials\add-to-cart.cshtml:line 217
   at CompiledRazorTemplates.Dynamic.RazorEngine_ad46cbb7249249af848b19b4ac973328.Execute() in D:\dynamicweb.net\Solutions\id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\ecom\product\partials\add-to-cart.cshtml:line 136
   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 @using Co3.ID.Dw.Services 16 17 @{ 18 var shopContext = SiteContext.CurrentSiteContext(); 19 string alternativeAction = string.IsNullOrEmpty(PageView.Current().Area.Item["EcommerceAlternativeCallToAction"]?.ToString()) == false ? PageView.Current().Area.Item["EcommerceAlternativeCallToAction"].ToString() : string.Empty; 20 KeyValuePair<string, EspressoProductList> replacementProductGroup = Model.RelatedGroups.FirstOrDefault(rg => string.Equals(rg.Key, "RELGRP13")); 21 EspressoProduct replacementProduct = null; 22 if (replacementProductGroup.Value != null && replacementProductGroup.Value.Products.Any()) 23 { 24 replacementProduct = replacementProductGroup.Value.Products.FirstOrDefault(); 25 Product dwProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById(replacementProduct.Id, replacementProduct.VariantId, Context.LanguageID); 26 if (dwProduct == null || !dwProduct.ShowInProductList || !dwProduct.Active) 27 { 28 replacementProduct = null; 29 } 30 } 31 } 32 33 34 35 <form action="/system/data/cart" class="e-product-form js-e-product-form js-e-product-form-addtocart pb-1" method="post"> 36 <input name="CartCmd" type="hidden" value="Add"> 37 <input name="ProductID" type="hidden" value="@Model.Id"> 38 <input name="VariantID" type="hidden" value="@Model.VariantId"> 39 <input name="Quantity" type="hidden" value="1"> 40 <input name="Redirect" type="hidden" value=""> 41 <input name="Name" type="hidden" value="@Model.Name"> 42 <input name="Number" type="hidden" value="@Model.Number"> 43 <input name="Price" type="hidden" value="@Model.Price.Value.ToJavaScript()"> 44 <input name="CurrencyCode" type="hidden" value="@Model.Price.CurrencyCode"> 45 46 47 @if (Model.VariantGroups.Any()) 48 { 49 <div class=""> 50 @foreach (KeyValuePair<string, EspressoVariantGroup> variantGroup in Model.VariantGroups) 51 { 52 bool isColorGroup = variantGroup.Value.Id == Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID; 53 string groupClassNameAppend = isColorGroup ? "color" : "size"; 54 int variantTake = 7; 55 56 57 string variantInputFieldName = string.Format("{0}_{1}", Model.Id, variantGroup.Value.Id); 58 <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)> 59 <label class="form-control-label d-flex font-weight-semibold small @(isColorGroup == false ? "d-flex justify-content-between" : string.Empty)"> 60 @Translate(string.Format("eCom - Product Details - variant header - {0}", variantGroup.Value.Name), variantGroup.Value.Name) 61 @if (isColorGroup == true) 62 { 63 <span class="js-identity-selected-color-variant-text">@Model.ColorVariantText</span> 64 65 if (Model.SizeGuidePageId > 0) 66 { 67 if (shopContext == ShopType.B2B || shopContext == ShopType.CustomerShop) 68 { 69 if (Model.SizeGuidePageId > 0 || Model.BrandCode == "PRIVATELAB") 70 { 71 <a class="ml-auto text-muted font-weight-normal link-underline" data-toggle="modal" data-target="#identity-size-guide-modal"> 72 @Translate("eCom - Product Details - size guide -link -text", "Størrelsesguide") 73 </a> 74 } 75 } 76 else 77 { 78 <a class="ml-auto text-muted font-weight-normal link-underline" data-toggle="modal" data-target="#identity-size-guide-modal"> 79 @Translate("eCom - Product Details - size guide -link -text", "Størrelsesguide") 80 </a> 81 } 82 83 } 84 85 } 86 </label> 87 <div class="identity-variant-group d-flex"> 88 @{ 89 int variantCount = variantGroup.Value.Options.Count; 90 bool shouldWrapLast = variantCount > variantTake; 91 int variantIndex = 0; 92 string collapseId = string.Format("collapseExtraVariants_{0}", variantGroup.Value.Name); 93 94 IOrderedEnumerable<KeyValuePair<string, EspressoVariantOption>> variantGroupOptions = variantGroup.Value.Options.OrderBy(o => o.Key); 95 96 if (isColorGroup) 97 { 98 //variantGroupOptions = variantGroup.Value.Options.OrderByDescending(o => o.Value.Id == variantGroup.Value.SelectedOptionId); 99 } 100 else 101 { 102 Dictionary<string, int> variantGroupOptionSortOrder = ProductService.Instance.GetVariantGroupOptionSortOrder(variantGroup.Value.Name); 103 variantGroupOptions = variantGroup.Value.Options.OrderBy(o => o.Value.Id != null && variantGroupOptionSortOrder.ContainsKey(o.Value.Id) ? variantGroupOptionSortOrder[o.Value.Id] : 99); 104 } 105 } 106 107 108 @foreach (KeyValuePair<string, EspressoVariantOption> variantOption in variantGroupOptions) 109 { 110 string variantInputFieldId = string.Format("{0}_{1}", variantInputFieldName, variantOption.Value.Id); 111 bool isSelected = variantOption.Value.Id == variantGroup.Value.SelectedOptionId; 112 string lastVariantIdBeforeWrap = string.Empty; 113 114 115 if (shouldWrapLast && variantIndex == variantTake) 116 { 117 lastVariantIdBeforeWrap = variantOption.Key; 118 119 <label class="custom-control custom-radio identity-variant-select-option js-identity-variant-select-option"> 120 <span class="custom-control-description disabled"> 121 <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"> 122 <span class="js-variant-hidden-count" data-default="@(variantCount - variantTake)">+@(variantCount - variantTake)</span> 123 </span> 124 </span> 125 </label> 126 127 @VariantOption(isColorGroup, isSelected, variantInputFieldId, variantInputFieldName, variantOption, true) 128 129 @:</div> 130 @:<div class="collapse js-identity-extra-variants-collapse" id="@collapseId"> 131 @:<div class="identity-variant-group d-flex"> 132 } 133 134 if (variantOption.Key != lastVariantIdBeforeWrap) 135 { 136 @VariantOption(isColorGroup, isSelected, variantInputFieldId, variantInputFieldName, variantOption) 137 } 138 139 if (shouldWrapLast && (variantIndex + 1) == variantCount) 140 { 141 <label class="custom-control custom-radio identity-variant-select-option"> 142 <span class="custom-control-description disabled"> 143 <span class="@(isColorGroup ? "identity-variant-select-option-color" : "identity-variant-select-option-generic")" data-toggle="collapse" href="#@collapseId" role="button" aria-expanded="false"> 144 <span class="variant-close-toggle"></span> 145 </span> 146 </span> 147 </label> 148 @:</div> 149 } 150 variantIndex++; 151 } 152 </div> 153 </div> 154 } 155 156 </div> 157 } 158 @if (PageView.Current().IsBasketEnabled()) 159 { 160 if (shopContext == ShopType.B2C) 161 { 162 if (replacementProduct != null) 163 { 164 <div class="d-flex flex-column mb-2" style="gap:1em;"> 165 <a class="btn btn-replacement btn-lg btn-block position-relative" href="@replacementProduct.Link"> 166 @Translate("eCom Product - Replacement Product - Button", "View upgraded style") 167 </a> 168 </div> 169 } 170 <button class="btn btn-primary btn-lg btn-block position-relative" type="submit"> 171 @Translate("eCom Product - Add To Cart - Button", "Add to cart") 172 </button> 173 174 <div class="d-block d-lg-none mt-2"> 175 @RenderingService.Instance.PartialView("ecom/product/partials/designer-link.cshtml", Model) 176 </div> 177 178 } 179 180 } 181 else 182 { 183 @alternativeAction 184 } 185 186 </form> 187 188 189 @helper VariantOption(bool isColorGroup, bool isSelected, string variantInputFieldId, string variantInputFieldName, KeyValuePair<string, EspressoVariantOption> variantOption, bool boolHide = false) 190 { 191 <label class="custom-control custom-radio identity-variant-select-option @(boolHide == true ? "js-identity-variant-select-option-hidden d-none" : string.Empty)"> 192 <input class="custom-control-input js-e-product-form-variant-group-input required" id="@variantInputFieldId" name="@variantInputFieldName" title="@HttpUtility.HtmlEncode(variantOption.Value.Name.Replace("\"", "'"))" data-name="@HttpUtility.HtmlEncode(variantOption.Value.Name.Replace("\"", "'"))" type="radio" value="@variantOption.Value.Id" @(isSelected ? "checked" : string.Empty)> 193 @* 194 @if (isColorGroup) 195 { 196 197 } 198 else 199 { 200 string variantComboId = string.Format("{0}.{1}", Model.VariantGroups[Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID].SelectedOptionId, variantOption.Value.Id); 201 IdentityProduct idProduct = ProductService.Instance.GetVariantByComboId(Model, variantComboId); 202 <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")> 203 }*@ 204 <span class="custom-control-description"> 205 <div class="identity-corner-brackets-container identity-corner-brackets-all border-primary is-corner-thumb p-0"> 206 <div class="identity-corner-brackets-wrapper border-primary"> 207 208 209 210 211 212 @if (isColorGroup) 213 { 214 EspressoVariantGroup sizeVariantGroup = Model.VariantGroups.FirstOrDefault(vg => vg.Key != Co3.ID.Data.App.Constants.PRODUCT_VARIANT_GROUP_COLOR_ID).Value; 215 string variantComboId = string.Format("{0}.{1}", variantOption.Value.Id, sizeVariantGroup.SelectedOptionId); 216 IdentityProduct idProduct = ProductService.Instance.GetVariantByComboId(Model, variantComboId); 217 EspressoProductImageUrl imageUrl = idProduct?.ImagePrimary; 218 219 if (imageUrl != null) 220 { 221 <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> 222 } 223 else 224 { 225 <span class="identity-variant-select-option-generic"> 226 <span>@variantOption.Value.Name</span> 227 </span> 228 } 229 } 230 else 231 { 232 <span class="identity-variant-select-option-generic"> 233 <span class="js-variant-size-text">@variantOption.Value.Name</span> 234 </span> 235 } 236 237 238 </div> 239 </div> 240 </span> 241 </label> 242 } 243
Extra slitstark T-shirt i lättare tyg . Fyra-lagers ribbsticking, nack-och axelband. Med halvmåne i nacken. T-shirten har genomgått en förkrympnings process vid mycket höga temperaturer, båda före och efter indfärgningen, för extra stabilitet och lång livstid.
PRO Wear T-shirt | light
PRO Wear T-shirt | light
PRO Wear T-shirt | light
PRO Wear T-shirt | light

Designa företagskläder & merch

Välj produkt, ladda upp logotyp – få snabbt en offert från en ID®-återförsäljare.

Starta din design nu

Hittar du inget plagg som passar era behov?

Med en Private Label-lösning skapar ni unika stilar i nära samarbete med vårt erfarna team.

Se möjligheterna här

Sport & förening

Service & Turism

Kontor & administration

Hotell, café & restaurang

Tidlösa arbetskläder

Profilkläder & företagskläder
med tidlös design
sedan 1983

Hitta er färg

Välj bland 60+ färger
– matcha ert företags
profil

Stärk gemenskapen

Kläder med logotyp som
stärker er gemensamma
identitet

Kvalitet som håller

Företagskläder i hög
kvalitet – behåller passform
och färg tvätt efter tvätt

Rapport om företagens sociala ansvar, jfr § 99a i den danska bokföringslagen. BCI cotton ID® ESG-rapport 2025/2026. Läs här

keyboard_arrow_up