Error executing template "Designs/exhibition_site/QueryPublisher/partials/mch365-exhibitor-item.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.MCH.Website.Frontend.Repositories.BaseRepository.GetAssetIds(Profile profile, String type, String cacheKey, MCH365ViewType viewType) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Repositories\BaseRepository.cs:line 58 at Co3.MCH.Website.Frontend.Repositories.ProductRepository.GetProducts(Profile profile, MCH365ViewType viewType) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Repositories\ProductRepository.cs:line 326 at Co3.MCH.Website.Frontend.Services.MCH365.ProductService.GetProducts(Profile profile, MCH365ViewType viewType) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Services\MCH365\ProductService.cs:line 244 at Co3.MCH.Website.Frontend.Services.MCH365.ProfileService.GetProfileSubAssetInfo(Profile profile) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Services\MCH365\ProfileService.cs:line 112 at Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce.ProfileProduct.get_SubAssetInfo() in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Models\Frontend\Ecommerce\ProfileProduct.cs:line 55 at CompiledRazorTemplates.Dynamic.RazorEngine_8d279eba85d9470387bab74d515538ea.Execute() in E:\Websites\mch365.espresso5.dk\Files\Templates\Designs\exhibition_site\QueryPublisher\partials\mch365-exhibitor-item.cshtml:line 203 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 @using Co3.Espresso.Website.Services 2 @using Co3.MCH.Data.Models.MCH365 3 @using Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce 4 @using Dynamicweb 5 @using ProductService = Co3.MCH.Website.Frontend.Services.Ecommerce.ProductService 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce.ProfileProduct> 7 8 @{ 9 bool hasPresentation = Model.HasPresentation; 10 bool companyBookMeeting = Model.Contact.BookMeeting; 11 bool companyDirectContact = Model.Contact.DirectContact; 12 string companyEmail = Model.Company.Email; 13 IEnumerable<BoothInfo> booths = Model.Booths; 14 15 List<ContactPersonProduct> contactPersons; 16 17 string profileText; 18 19 20 if (hasPresentation) 21 { 22 contactPersons = Model.Presentation.ContactPersons.Products.Select(p => (ContactPersonProduct)p).ToList(); 23 profileText = ProductService.Instance.GetTruncatedFormattedString(Model.Presentation.DescriptionFormatted, 650); 24 } 25 else 26 { 27 contactPersons = Model.ContactPersons.Products.Select(p => (ContactPersonProduct)p).ToList(); 28 profileText = ProductService.Instance.GetTruncatedFormattedString(Model.Company.DescriptionFormatted, 650); 29 } 30 31 string listViewMode = string.IsNullOrEmpty(Context.Current.Session["ListViewMode"]?.ToString()) ? "expanded" : Context.Current.Session["ListViewMode"]?.ToString(); 32 if (listViewMode == "condensed") 33 { 34 <div data-listViewMode="@listViewMode" class="w-100 bg-ultralight border-radius mt-half e-block-link e-productlist-item js-e-block-link js-e-productlist-item js-e-productlist-item-@Model.Id" data-product-id="@Model.Id" data-variant-id="@Model.VariantId"> 35 <div class="e-productlist-item-container container-fluid h-100"> 36 <div class="row h-100"> 37 <div class="col-12 p-1 mch365-productlist-item-content-wrapper item-condensed flex-row"> 38 <div class="item-condensed-title"> 39 <div class="d-flex mr-3"> 40 <div class="condensed-list-logo mr-1"> 41 @if (Model?.Company?.Logo != null) 42 { 43 string logoImage = Model.Company.Logo; 44 string companyBackgroundColor = Model.Company.BrandColor; 45 string noCompanyInfo = ""; 46 string textLight = "e-text-light"; 47 if (string.IsNullOrEmpty(logoImage) && string.IsNullOrEmpty(companyBackgroundColor)) 48 { 49 noCompanyInfo = "bg-light"; 50 textLight = "text-muted"; 51 } 52 53 string noLogoBackground = ""; 54 if (string.IsNullOrEmpty(logoImage) && !string.IsNullOrEmpty(companyBackgroundColor)) 55 { 56 noLogoBackground = "style=\"background:" + companyBackgroundColor + ";\""; 57 } 58 59 <div class="e-productlist-item-image-container @noCompanyInfo mb-0" @noLogoBackground> 60 <a class="e-productlist-item-image-wrapper justify-content-center align-items-center d-flex @textLight" href="@Model.Link"> 61 @{ 62 if (string.IsNullOrEmpty(logoImage)) 63 { 64 <span class="h1 mb-0">@Model.Company.Name.Substring(0, 1).ToLower()</span> 65 } 66 else 67 { 68 <img alt="@Model.Company.Name" class="e-productlist-item-image w-100 p-1" src="@logoImage"/> 69 } 70 } 71 72 </a> 73 </div> 74 } 75 </div> 76 <div> 77 <h4 class="mb-0 font-weight-extrabold line-clamp-1">@Model.Company.Name</h4> 78 <p class="small line-height-sm mb-0 mt-1 line-clamp-2"> 79 @profileText 80 </p> 81 </div> 82 </div> 83 </div> 84 <div class="item-condensed-booth"> 85 @if (booths != null) 86 { 87 if (booths.Count() == 1) 88 { 89 BoothInfo booth = booths.FirstOrDefault(); 90 if (booth.Hall != null && booth.Booth != null) 91 { 92 <p class="small mb-0"> 93 <small>@Translate("MCH365 - Profile booth - Text", "Stand")</small> 94 </p> 95 <h4 class="mt-half mb-0 font-weight-extrabold mr-xl-2" style="white-space: nowrap"> 96 @booth.Hall.Name <span class="text-downsize-notched">@booth.Booth.Number </span> 97 </h4> 98 } 99 } 100 else 101 { 102 <div class="align-items-baseline d-inline-flex flex-wrap justify-content-end justify-content-xl-start mb-1"> 103 <p class="small w-100 mb-0"> 104 <small>@Translate("MCH365 - Profile booths - Text", "Stande")</small> 105 </p> 106 @foreach (BoothInfo booth in booths) 107 { 108 if (booth.Hall != null && booth.Booth != null) 109 { 110 <h4 class="font-weight-extrabold mb-0 ml-1 ml-xl-0 mr-xl-1 mt-half text-muted" style="white-space: nowrap"> 111 @booth.Hall.Name <span class="text-downsize-notched">@booth.Booth.Number</span> 112 </h4> 113 } 114 } 115 </div> 116 } 117 } 118 </div> 119 <div class="item-condensed-subasset"> 120 @if (Model.SubAssetInfo.Count > 0) 121 { 122 <p class="mb-0 font-weight-bold"> 123 <small>@Model.SubAssetInfo.Count @Translate("MCH365 - Profile listItem SubAssetInfo - Text", "opslag")</small> 124 </p> 125 <p class="small mb-0 mt-half font-weight-normal d-none d-md-block">@Translate("MCH365 - Profile listItem latestUpdate - Text", "seneste fra") @Model.SubAssetInfo.LatestDate.ToString("d. MMMM yyyy")</p> 126 } 127 </div> 128 <div class="item-condensed-contacts"> 129 @if (contactPersons.Any()) 130 { 131 <div class="mt-auto"> 132 <p class="d-block mb-0 text-right"> 133 <small>@contactPersons.Count() @Translate("MCH365 - Profile listItem contactPersons - Text", "kontakt­personer")</small> 134 </p> 135 </div> 136 } 137 </div> 138 <div class="item-condensed-options"> 139 @if (!string.IsNullOrEmpty(companyEmail)) 140 { 141 <div class="d-flex small align-items-center justify-content-end mch365-custom-productlist-cta"> 142 @if (companyDirectContact) 143 { 144 <span class="mch365-custom-productlist-cta-icon"> 145 <img src="/Files/Templates/Designs/exhibition_site/_assets/img/streamline/streamline-icon-email-action-edit@48x48.svg" title="@Translate("MCH365 - Profile listItem contactDirect - Text", "Direkte kontakt")" alt="" role="presentation"/> 146 </span> 147 } 148 @if (companyBookMeeting) 149 { 150 <span class="mch365-custom-productlist-cta-icon"> 151 <img src="/Files/Templates/Designs/exhibition_site/_assets/img/streamline/streamline-icon-calendar-edit@48x48.svg" title="@Translate("MCH365 - Profile listItem bookMeeting - Text", "Møde­booking")" alt="" role="presentation"/> 152 </span> 153 } 154 </div> 155 } 156 </div> 157 </div> 158 </div> 159 </div> 160 </div> 161 } 162 else 163 { 164 <div class="w-100 bg-ultralight border-radius my-1 e-block-link e-productlist-item js-e-block-link js-e-productlist-item js-e-productlist-item-@Model.Id" data-product-id="@Model.Id" data-variant-id="@Model.VariantId"> 165 <div class="e-productlist-item-container container-fluid h-100"> 166 <div class="row h-100"> 167 <div class="col-9 col-lg-7 col-xl-8 p-1 p-lg-2 mch365-productlist-item-content-wrapper"> 168 <h3 class="mb-0 font-weight-extrabold">@Model.Company.Name</h3> 169170 @if (booths != null) 171 { 172 if (booths.Count() == 1) 173 { 174 BoothInfo booth = booths.FirstOrDefault(); 175 if (booth.Hall != null && booth.Booth != null) 176 { 177 <h3 class="mt-0 mb-1 font-weight-extrabold"> 178 @booth.Hall.Name <span class="text-downsize-notched">@booth.Booth.Number</span> 179 </h3> 180 } 181 } 182 else 183 { 184 <div class="d-inline-flex flex-wrap mb-1"> 185 @foreach (BoothInfo booth in booths) 186 { 187 if (booth.Hall != null && booth.Booth != null) 188 { 189 <h3 class="mt-0 mb-0 font-weight-extrabold mr-1" style="white-space: nowrap"> 190 @booth.Hall.Name <span class="text-downsize-notched">@booth.Booth.Number</span> 191 </h3> 192 } 193 } 194 </div> 195 } 196 } 197198 <p class="small line-height-sm mb-2 mt-1 line-clamp-10"> 199 @profileText 200 </p> 201202203 @if (Model.SubAssetInfo.Count > 0) 204 { 205 <span class="mch365-productlist-item-bulletin-wrapper mt-auto"> 206 <h4 class="mb-0">@Model.SubAssetInfo.Count @Translate("MCH365 - Profile listItem SubAssetInfo - Text", "opslag")</h4> 207 <p class="small mb-0 mt-half font-weight-normal">@Translate("MCH365 - Profile listItem latestUpdate - Text", "seneste fra") @Model.SubAssetInfo.LatestDate.ToString("d. MMMM yyyy")</p> 208 </span> 209 } 210211 </div> 212 <div class="col-3 col-lg-5 col-xl-4 bg-light p-1 p-lg-2 mch365-productlist-item-sidebar-wrapper"> 213214 @if (Model?.Company?.Logo != null) 215 { 216 string logoImage = Model.Company.Logo; 217 string companyBackgroundColor = Model.Company.BrandColor; 218219 string noCompanyInfo = ""; 220 string textLight = "e-text-light"; 221222 if (string.IsNullOrEmpty(logoImage) && string.IsNullOrEmpty(companyBackgroundColor)) 223 { 224 noCompanyInfo = "bg-light"; 225 textLight = "text-muted"; 226 } 227228 string noLogoBackground = ""; 229 if (string.IsNullOrEmpty(logoImage) && !string.IsNullOrEmpty(companyBackgroundColor)) 230 { 231 noLogoBackground = "style=\"background:" + companyBackgroundColor + ";\""; 232 } 233234 <div class="e-productlist-item-image-container @noCompanyInfo" @noLogoBackground> 235 <a class="e-productlist-item-image-wrapper justify-content-center align-items-center d-flex @textLight" href="@Model.Link"> 236 @{ 237 if (string.IsNullOrEmpty(logoImage)) 238 { 239 <span class="h1 mb-0">@Model.Company.Name.Substring(0, 1).ToLower()</span> 240 } 241 else 242 { 243 <img alt="@Model.Company.Name" class="e-productlist-item-image w-100 p-1" src="@logoImage"/> 244 } 245 } 246247 </a> 248 </div> 249 } 250251 @if (!string.IsNullOrEmpty(companyEmail)) 252 { 253 <div class="small flex-column mb-2"> 254 @if (companyDirectContact) 255 { 256 <span class="d-flex small font-weight-normal mb-1 align-items-center text-center mch365-custom-productlist-cta"> 257 <span class="mch365-custom-productlist-cta-icon"> 258 <img src="/Files/Templates/Designs/exhibition_site/_assets/img/streamline/streamline-icon-email-action-edit@48x48.svg" alt="" role="presentation"/> 259 </span><span>@Translate("MCH365 - Profile listItem contactDirect - Text", "Direkte kontakt")</span> 260 </span> 261 } 262 @if (companyBookMeeting) 263 { 264 <span class="d-flex small font-weight-normal mb-1 align-items-center text-center mch365-custom-productlist-cta"> 265 <span class="mch365-custom-productlist-cta-icon"> 266 <img src="/Files/Templates/Designs/exhibition_site/_assets/img/streamline/streamline-icon-calendar-edit@48x48.svg" alt="" role="presentation"/> 267 </span><span>@Translate("MCH365 - Profile listItem bookMeeting - Text", "Møde­booking")</span> 268 </span> 269 } 270 </div> 271 } 272 @if (contactPersons.Any()) 273 { 274 <div class="mt-auto"> 275 <ul class="mch365-productlist-custom-contact-persons"> 276277 @foreach (ContactPersonProduct contactPerson in contactPersons.OrderBy(cp => cp.Sort).Take(3)) 278 { 279 string noImageClasses = ""; 280 string contactPersonImage = contactPerson.Image; 281 if (string.IsNullOrEmpty(contactPersonImage)) 282 { 283 contactPersonImage = "/Files/Templates/Designs/mch365_admin/_assets/img/mch365-noimage.svg"; 284 noImageClasses = "bg-white"; 285 } 286287 <li class="animate animate-triggered fadeIn animate-show @noImageClasses" style="background-image: url('/admin/public/getimage.ashx?Image=@contactPersonImage&Width=100&Height=100&Format=webp&Quality=75&Crop=0');" title="@contactPerson.Name"></li> 288 } 289290 @if (contactPersons.Count() > 3) 291 { 292 <li class="mch365-productlist-custom-contact-persons-add"> </li> 293 } 294295 </ul> 296 <p class="d-block mb-0 mt-1 small text-center"> 297 <small>@contactPersons.Count() @Translate("MCH365 - Profile listItem contactPersons - Text", "kontakt­personer")</small> 298 </p> 299 </div> 300 } 301 </div> 302 </div> 303 </div> 304 </div> 305 } 306 }
Glaspusteriet Gnist. Glas og Keramik
J 7282
Fra glødende glas og en klump ler Hver dag går vi på arbejde for at skabe smukke og brugbare hverdagsting og kunsthåndværk, der bliver værdsat nu og i mange år fremover. Ting, der gerne må flytte ind og sætte små aftryk dér, hvor de ender med at bo. I vindueskarmen, på juletræet eller ved morgenkaffen. Brugskunst, unika og keramik til en hver lejlighed.Legende umage. Og helt unikt. Alt, vi laver, er gjort med umage - krydret med en legende skabertrang. Hvert ting er præget af de hænder, og den mund, der har formet det. Og selvom vi har en sikker hånd, så er hver ting helt sin egen, formet på materialets præmisser. Du kan kalde det skørt eller
11 opslag
seneste fra 10. juli 2026
Godtbergsen A/S
M 9982
Godtbergsen blev grundlagt i 1940 og er en familieejet virksomhed med base i Børkop, Danmark. Med mere end otte årtiers erfaring har vi opbygget et stærkt ry som en betroet distributør og leverandør af gaveartikler, legetøj, sæsonbestemte produkter, souvenirs og meget mere.På vores hovedkvarter og lager i Børkop administrerer vi en bred vifte af mærker og kollektioner, der bringer glæde og inspiration til kunder i hele Skandinavien og resten af verden. Blandt vores mest værdsatte og veletablerede mærker er Willow Tree og Disney, som har været en del af vores sortiment i mange år og fortsat glæder både samlere og gavegivere.Vores passion lig
5 opslag
seneste fra 27. november 2025
GreenGate
M 9658
GreenGate er et dansk interiørbrand grundlagt i 1991 med hovedsæde på Taarbæklund i Klampenborg nord for København. Det, der begyndte som en lille interiørbutik med en designafdeling i kælderen, er i dag et globalt brand, der findes i hjem over hele verden. Vi designer og sælger inden for tre kernekategorier: porcelæn og stentøj, boligtekstiler som dækketøj, sengetøj og køkkentekstiler samt boligtilbehør, der fuldender GreenGate-universet — alt sammen med et karakteristisk romantisk og nostalgisk udtryk under vores brandfilosofi "Moments Worth Sharing."For os handler design om mere end smukke ting. Vi ønsker at samle generationer omkring de f
Heinen Delfts Blauw
M 9950
I Heinen Delfts Blauw kollektionen finder du det billedskønne, finurlige og til tider humoristiske porcelæn som skabes på Heinen Delfts Blauws værksted i Holland.Om du står med en sirligt malet vægplatte eller et dekorativt stel, så er det stykker af porcelæn, der er lavet med kærligheden til traditionerne, nysgerrighed på det nye og med omtanke for det gode håndværk.Historien om Heinen Delft Blauw begyndte i 1976, da Jaap Heinen startede virksomheden i et lille værksted i byen Putten, Holland. Inspireret af den traditionelle hollandske keramik, som har rødder tilbage til det 17. århundrede, fokuserede Heinen på at kombinere traditionelt hånd
8 opslag
seneste fra 6. juni 2024
Hornvarefabrikken
J 7166
På messen har vi vores nyeste kollektioner med fra Hornvarefabrikken & Fabrikant.Fra Hornvarefabrikken introducerer vi den helt nye smykkekollektion.Fra Fabrikant har vi helt nye lædertasker, forkobrede blomster, en klassisk sailer-uldtrøje i nye farver og et nyt keramikkrus.
3 opslag
seneste fra 3. december 2025
House Doctor
M 9548
A 2430
Træd ind i den nye AW2026-kollektion fra House Doctor.En hyldest til et liv i bevægelse.Til hverdagen som en kunstform.Til hjemmet som en fortælling – aldrig færdig, altid i udvikling.Denne sæson inviterer vi dig ind i et rum, hvor livetudfolder sig gennem farver, former, teksturer og art pieces,der inspirerer.LIVE LIKE AN ARTIST handler om at skabe et hjem, der tørskille sig ud.House Doctor designer interiør, møbler og accessories, der fremhæver din personlige stil og giver indretningen karakter. Med rødder i den skandinaviske designtradition gør vores produkter det let at sammensætte et unikt og inspirerende sortiment. Produkterne er skabt
4 opslag
seneste fra 9. juli 2025
House Nordic ApS
M 9666
House Nordic er en dansk vækstvirksomhed, grundlagt i 2017 og med base på Fyn. I dag tæller vi omkring 100 dedikerede medarbejdere og samarbejder med partnere i over 45 lande.Vi har på få år udviklet os fra en iværksætterdrøm til en anerkendt B2B-partner inden for nordisk boligdesign. Vi tilbyder et aktuelt og bredt sortiment af møbler og interiør, inspireret af det lyse, enkle og funktionelle formsprog, som kendetegner skandinavisk design.House Nordic kombinerer æstetik og forretningsforståelse med et internationalt udsyn og en skarp sans for trends og markedets behov. Vores produkter er derfor nøje udvalgt til at skabe værdi og inspirere bå
4 opslag
seneste fra 9. januar 2023
Hübsch A/S
M 9588
Nogle designs forbliver relevante år efter år. De falder naturligt ind i hverdagen og bliver en del af de rum, mennesker lever i. Denne kollektion bygger videre på netop disse designs. Med AW26 Nyheder sætter vi fokus på de produkter, som vores kunder fortsat vælger, og videreudvikler dem med opdaterede detaljer, materialer og former. Resultatet er et fokuseret udvalg af stærke og salgssikre designs, der fungerer på tværs af mange forskellige miljøer.Afbalanceret med et udvalg af mere karakterfulde designs tilfører kollektionen netop den rette mængde personlighed til at skille sig ud, samtidig med at produkterne er nemme at placere, style og
10 opslag
seneste fra 3. juni 2026
Ib Laursen
M 9568
Denne sæson præsenterer Ib Laursen en kollektion formet af stemning, naturlige materialer og styling. Tre tydelige temaer – Reflections, Grounded og Adorn – sætter den visuelle retning for kataloget og indfanger, hver især, centrale udtryk i sæsonens trends, omsat til inspirerende og salgsparate universer.Reflections udforsker en rolig og enkel æstetik, hvor gennemtænkte detaljer og stille øjeblikke definerer rummet. Her får hverdagsgenstande lov til at træde frem – subtile, taktile og tidløse.Grounded bringer varme og dybde i fokus. Naturlige teksturer og jordnære toner skaber en imødekommende ramme – et rum at falde til ro i, hvor materiale
39 opslag
seneste fra 17. juni 2026
Jakobsdals
M 9646
I vores del af universet er kanterne mindre skarpe, hjørnerne en smule rundere og livet meget blødere. Vi har elsket tekstiler siden 1910, og i dag er vores fokus stadig på blødt og varmt interiørdesign til private hjem. I vores kollektioner vil du finde både fluffy puder, markante måtter og quirky møbler.Go hard or go home, siger de. Hvis du spørger os? Go soft and go home.
21 opslag
seneste fra 5. juni 2026
Julie Damhus Studio
J 7298
Dansk hånddrejet keramik fra Djursland. Julie Damhus er uddannet Industriel Designer med speciale i keramik. Siden 2017 har hun drevet værkstedet på Djursland og sælger til det meste af verden. Keramikken er i matte farverige glasurer, som gør enhver borddækning spændende. Designet er funktionelt og med enkle linjer.
6 opslag
seneste fra 17. juni 2025










