Fremragende 4.7 ud af 5 på Trustpilot

Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_Preferences/Offcanvas.cshtml"
System.ArgumentException: Customized cultures cannot be passed by LCID, only by name. (Parameter 'culture')
   at System.Globalization.RegionInfo..ctor(Int32 culture)
   at CompiledRazorTemplates.Dynamic.RazorEngine_81416d691638439a9b940373f5dc9f7a.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent2\_w\3\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent2\_w\3\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 805

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> @using Dynamicweb.Frontend @using Dynamicweb.Frontend.Navigation @using System.Text.RegularExpressions @using Microsoft.AspNetCore.WebUtilities @{ int updatePageId = Pageview.Page.ID; string loadContent = Dynamicweb.Context.Current?.Request.QueryString.Get("LoadContent") ?? string.Empty; var region = new System.Globalization.RegionInfo(Pageview.Area.CultureInfo.LCID); string? title = null; if (Model.Item.TryGetString("Title", out string customTitle)) { title = customTitle; } if (Model.Item.GetBoolean("UseLanguageName")) { title = region.DisplayName; } string pageIcon = string.Empty; if (Model.Item.TryGetString("Icon", out var icon)) { pageIcon = icon; } string flagIconFolder = "/Files/Images/Icons/Flags/"; if (Model.Item.GetBoolean("UseLanguageIcon")) { pageIcon = $"{flagIconFolder}{region.Name}.svg"; } } @if(loadContent != "true") { <div class="nav-wrapper"> <span class="p-2 nav-link d-inline-flex align-items-center gap-2 text-nowrap text-decoration-underline-hover" role="button" data-bs-toggle="offcanvas" data-bs-target="#DynamicOffcanvas" id="PreferencesDropdown_@Model.ID" hx-get hx-vals='{"ParagraphId": "@Model.ID", "LayoutTemplate": "Swift-v2_PageClean.cshtml", "LoadContent": "true"}' hx-trigger="click" hx-swap="innerHTML" hx-target="#DynamicOffcanvas"> @if (!string.IsNullOrEmpty(pageIcon) && pageIcon.EndsWith(".svg", StringComparison.OrdinalIgnoreCase)) { <span class="icon-3 pe-none">@ReadFile(pageIcon)</span> } @if (!string.IsNullOrEmpty(title)) { <span>@title</span> } </span> </div> } else { var languages = new List<Dynamicweb.Content.Page>(); var ecomCountries = Dynamicweb.Ecommerce.Services.Countries.GetCountries()?.OrderBy(country => country.GetName(Pageview.Area.EcomLanguageId)) ?? null; var currencies = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); if (Model.Item.GetBoolean("LanguageSelector") == true) { if (Pageview.Page.Area.IsMaster) { languages.Add(Pageview.Page); if (Pageview.Page.Languages != null) { foreach (var language in Pageview.Page.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } else { if (Pageview.Page.MasterPage != null) { languages.Add(Pageview.Page.MasterPage); if (Pageview.Page.MasterPage.Languages != null) { foreach (var language in Pageview.Page.MasterPage.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } } } <div class="offcanvas-header"> <h5 class="offcanvas-title" id="PreferencesLabel">@Translate("Preferences")</h5> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="@Translate("Close")"></button> </div> <div class="offcanvas-body"> @if (Model.Item.GetBoolean("LanguageSelector") == true && languages.Count > 1) { <div class="form-floating mb-3"> <select id="LanguageSelect" name="ID" class="form-select d-col-12" aria-label="@Translate("Select language")" hx-trigger="change" hx-target="#DynamicOffcanvas" hx-get="/" hx-vals='{"ParagraphId": "@Model.ID", "LayoutTemplate": "Swift-v2_PageClean.cshtml", "LoadContent": "true"}'> @foreach (var language in languages) { if (language != null && language.Published && language.Area.Active && language.Area.Published) { string selectedLanguage = language.Area.ID == Pageview.Area.ID ? "selected" : ""; updatePageId = selectedLanguage != "" ? language.ID : updatePageId; var masterPageId = Pageview.Page?.MasterPageId != null && Pageview.Page.MasterPageId != 0 ? Pageview.Page.MasterPageId : Pageview.ID; var preferencePageId = Dynamicweb.Content.Services.Pages.GetPageIDByMasterID(masterPageId, language.AreaId); preferencePageId = preferencePageId == 0 ? Pageview.Page.MasterPageId : preferencePageId; preferencePageId = preferencePageId == 0 ? Pageview.Page.ID : preferencePageId; <option hreflang="@language.Area.CultureInfo.TwoLetterISOLanguageName" value="@preferencePageId" @selectedLanguage>@language.Area.DisplayName</option> } } </select> <label for="LanguageSelect">@Translate("Language")</label> </div> } @if (Model.Item.GetBoolean("CountrySelector") == true && ecomCountries?.Count<Dynamicweb.Ecommerce.International.Country>() > 1) { <div class="form-floating mb-3"> <select name="CountryCode" id="CountryCodeSelect" class="form-select d-col-12" aria-label="@Translate("Select country")" hx-trigger="change" hx-target="#DynamicOffcanvas" hx-get="/" hx-vals='{"ID": "@updatePageId", "ParagraphId": "@Model.ID", "LayoutTemplate": "Swift-v2_PageClean.cshtml", "LoadContent": "true"}'> @foreach (var country in ecomCountries) { var selectedCountry = country.Code2 == Dynamicweb.Ecommerce.Common.Context.Country.Code2 ? "selected" : ""; if (!string.IsNullOrEmpty(country.GetName(Pageview.Area.EcomLanguageId))) { <option value="@country.Code2" @selectedCountry>@country.GetName(Pageview.Area.EcomLanguageId)</option> } } </select> <label for="CountryCodeSelect">@Translate("Delivery country")</label> </div> } @if (Model.Item.GetBoolean("CurrencySelector") == true && currencies.Count() > 1) { <div class="form-floating mb-3"> <select name="CurrencyCode" id="CurrencySelect" class="form-select d-col-12" aria-label="@Translate("Select currency")" hx-trigger="change" hx-target="#DynamicOffcanvas" hx-get="/" hx-vals='{"ID": "@updatePageId", "ParagraphId": "@Model.ID", "LayoutTemplate": "Swift-v2_PageClean.cshtml", "LoadContent": "true"}'> @foreach (var currency in currencies) { string selectedCurrency = currency.Code == Dynamicweb.Ecommerce.Common.Context.Currency.Code ? "selected" : ""; if (!string.IsNullOrEmpty(currency.Code)) { <option value="@currency.Code" @selectedCurrency>@currency.Code</option> } } </select> <label for="CurrencySelect">@Translate("Currency")</label> </div> } </div> @{ var uri = Dynamicweb.Context.Current?.Request?.Url; var queryParams = QueryHelpers.ParseQuery(uri?.Query); queryParams.Remove("LoadContent"); queryParams.Remove("ParagraphId"); queryParams.Remove("LayoutTemplate"); var newQuery = string.Join("&", queryParams.Select(kvp => $"{kvp.Key}={kvp.Value}")); var updateUrl = $"{uri?.Scheme}://{uri?.Host}{uri?.AbsolutePath}?{newQuery}"; } <div class="offcanvas-footer"> <a href="@updateUrl" hx-boost class="btn btn-primary w-100" data-dw-button="primary">@Translate("Update preferences")</a> </div> }

Hard trail mountain bikes

Hardtails are the pure mountain machines. They'll connect you to the trail and get you around the trail quickly and efficiently. They're ideal for cross country and trail riding.

Equipment

Unlock your cycling potential with the latest in bike equipment! From high-performance tires that grip the road like never before to lightweight frames designed for speed and agility, discover gear that enhances every ride.

Rediscover Freedom on Two Wheels

E-Bikes That Power Your Everyday Adventures

Experience the future of cycling with Trek and Electra electric bikes — combining style, speed, and effortless power. Whether you're commuting, cruising, or climbing hills, these e-bikes make every ride smoother, faster, and more fun.

Starting at just $999, there's never been a better time to upgrade your ride and embrace a healthier, greener way to move.

Bike Accessories

Outfit your bike with these handy essentials.

Imagine a world where nature thrives and every corner of the Earth is vibrant with life. By embracing sustainable habits and caring for our environment, we can create a brighter, greener future.

Embrace the nature

Take the Trail Less Traveled - And Go Further

Whether you’re climbing steep trails, exploring remote routes, or just chasing the horizon, Trek and Electra electric bikes give you the boost you need to adventure farther. Durable, powerful, and built for the wild.

Embrace the green

Explore Beyond the Beaten Path

Climb higher, roam farther, and discover new terrain with the electric boost of Trek and Electra e-bikes. Designed for adventure, built for rugged trails, and powered to keep you going - these bikes are your key to the outdoors, reimagined.

Embrace the city

Effortless Rides. Endless Possibilities.

Explore the city in style with the comfort and confidence of a Trek or Electra e-bike. Designed for smooth urban rides, quick errands, or leisurely weekend cruising — these bikes bring freedom and fun to every corner of your neighborhood.

Bicycles are the timeless companions of adventure, offering the freedom to explore, the joy of movement, and the promise of discovering new paths—both on the road and within ourselves.

Life is like riding a bicycle; to keep your balance, you must keep moving forward.

Bikes are not just a mode of transport; they are freedom on two wheels, inviting us to explore the world at our own pace.

Ride the Edge

Unleash the Power of Precision with the Canyon Torque

Engineered for the bold, the Canyon Torque is built to tackle the gnarliest descents and soar through technical terrain with ease.

With a rugged frame, aggressive geometry, and responsive suspension, this green machine doesn’t just ride trails—it dominates them.

Whether you're sending it at the bike park or charging through backcountry singletrack, the Torque delivers confidence and control every pedal of the way.

Precision in Motion

A sleek silhouette of cycling precision - where power meets poise in every turn.

Midnight Velocity

Where sleek engineering meets the silence of the night - Unveiling speed in the stillness of darkness.

Linked for Speed

A striking close-up of precision engineering - every chain link powers the pursuit of motion

Celebrating nature

Embrace a greener tomorrow

Together for a brighter future

The choices we make today shape the world we will leave for future generations. From reducing waste and conserving water to supporting sustainable practices, every step counts.

Celebrating nature

A greener tomorrow

Together for a brighter future

The choices we make today shape the world we will leave for future generations.

Next day delivery

Or collect same day

Expanded assortment

Order hundreds of products

Secure shopping

You're in safe hands

24/7 support

Dedicated support

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing