Interesseområder
Motion & Drives
Hvis du er maskinbygger, automatiktekniker, ingeniør, maskinmester eller konstruktør af maskiner og anlæg, er emneområdet mekaniske komponenter stedet, hvor du kan få nye ideer og se nye produkter og løsninger til nøjagtig styring og aktivering af roterende og lineære bevægelser i elektriske og pneumatiske systemer.
Hertil industrielle PC´er og softstartere samt lineære eller roterende encodere, der meget nøjagtigt måler bevægelsernes positionering.

Artikler og inspiration inden for Motion & Drives
12. august 2026 | Pilz Skandinavien
Security for Safety: Tydelige strukturer i automatiseringsnetværket
Maskinforordningen (EU) 2023/1230 fastslår klart: Safety fungerer kun pålideligt, hvis sikkerhedsrelevante funktioner er beskyttet mod manipulation. Moderne maskiner er digitalt forbundne, konfigurere
Nyeste leverandører inden for Motion & Drives
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:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Repositories\BaseRepository.cs:line 58 at Co3.MCH.Website.Frontend.Repositories.ContactPersonRepository.GetContactPersons(Profile profile, MCH365ViewType viewType) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Repositories\ContactPersonRepository.cs:line 38 at Co3.MCH.Website.Frontend.Services.MCH365.ContactPersonService.GetContactPersons(Profile profile, MCH365ViewType viewType) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Services\MCH365\ContactPersonService.cs:line 148 at Co3.MCH.Website.Frontend.Services.MCH365.ContactPersonService.GetContactPersonProducts(Profile profile, MCH365ViewType viewType) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Services\MCH365\ContactPersonService.cs:line 444 at Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce.ProfileProduct.get_ContactPersons() in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Models\Frontend\Ecommerce\ProfileProduct.cs:line 58 at CompiledRazorTemplates.Dynamic.RazorEngine_b37c420c29924814a9bedd0d1db65101.Execute() in E:\Websites\staging-mch365.espresso5.dk\Files\Templates\Designs\exhibition_site\QueryPublisher\partials\mch365-exhibitor-item.cshtml:line 27 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 }
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:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Repositories\BaseRepository.cs:line 58 at Co3.MCH.Website.Frontend.Repositories.ProductRepository.GetProducts(Profile profile, MCH365ViewType viewType) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Repositories\ProductRepository.cs:line 326 at Co3.MCH.Website.Frontend.Services.MCH365.ProductService.GetProducts(Profile profile, MCH365ViewType viewType) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Services\MCH365\ProductService.cs:line 244 at Co3.MCH.Website.Frontend.Services.MCH365.ProfileService.GetProfileSubAssetInfo(Profile profile) in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Services\MCH365\ProfileService.cs:line 112 at Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce.ProfileProduct.get_SubAssetInfo() in C:\Data\Development\git\mch365mb-dev\Co3.MCH.Website.Frontend\Models\Frontend\Ecommerce\ProfileProduct.cs:line 68 at CompiledRazorTemplates.Dynamic.RazorEngine_b37c420c29924814a9bedd0d1db65101.Execute() in E:\Websites\staging-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 }
Ahlsell A/S
B 1052
Ahlsell Danmark - Vi gør det nemmere at være professionel.Vi er samarbejdspartner for dem, der arbejder med at fremstille, installere, bygge, reparere og vedligeholde. Med et bredt udvalg af produkter og services, specialistviden og logistik i verdensklasse er det vores opgave at gøre vores professionelle kunders hverdag lettere, så de kan føre deres planer ud i livet og holde, hvad de lover.Vi betragter os selv som en faglig allieret og tager ansvar for at hjælpe vores kunder i en verden, hvor den eneste konstant er forandring. Med vores leverandører i ryggen er vi altid på forkant, så vi sammen med vores kunder kan reagere på ændrede krav
Cases fra Motion & Drives
- Case
4. august 2026 | PPS A/S
Øget kapacitet og fleksibilitet med automationsløsning hos LHM
LHM A/S er en dansk produktionsvirksomhed med speciale i højpræcisionsbearbejdning af metalemner til bl.a. offshore-industrien. For at imødekomme stigende efterspørgsel og fastholde konkurrenceevnen h
- Case
26. juni 2026 | LINROX ApS
Non dripping in Medical application
An X-Ray Scanner application (1st. generation), was dripping oil from the linear guideways installed for vertical and horizontal movements. Customer needed to eliminate the dripping in the 2nd. gen..
- Case
30. april 2026 | IMI
Præcision på apoteket: Transformér plukning af ordrer med smart automatisering
Et travlt apotek stod over for stigende udfordringer. Begrænset lagerplads, voksende kundebehov og et større varesortiment lagde et betydeligt pres på teamet. Manuel opbevaring og plukning af ordrer v
- Case
30. april 2026 | IMI
Forbedring af sikkerhed og effektivitet med en skræddersyet elektrisk løfteløsning til elcykler for Decathlon
Efterhånden som e-mobilitet omformer cykelbranchen, havde Decathlon brug for en mere sikker og mere effektiv måde at servicere stadig tungere elcykler og ladcykler i virksomhedens værksteder verden ov










