09/11/2025

2019 Vieilles Vignes

RRP DKK 99,00

DKK 99,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
ÅRETS RØDVIN 2021
Domaine du Bon Remède
Rødvin - Grenache - 75 cl - 14,50 %

I glasset fremstår vinen flot mørk. Duften byder på koncentreret rød bærfrugt og noter af grafit, trøffel og skovbund. Smagen er en eksplosion af intens bærfrugt, som afbalanceres flot af en solid, moden tannin, som gør vinen harmonisk og sikrer den et godt lagringspotentiale. Nyd vinen af rummelige glas op til otte år fra høståret, gerne som ledsager til festmåltider med kraftigt oksekød, lam eller andesteg.

09/11/2025

2020 El Casetero Macabeo

DKK 89,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Bodegas Gormaz
Hvidvin - Macabeo - 75 cl - 13,00 %

Her får du appetitlige citrus noter og en fin struktur. El Casetero Macabeo er en sprød vin med grøn/gule nuancer og en mineralsk og frugtig næse med lime og fersken sammen med nogle raffinerede krydrede elementer.
Smagen er forfriskende og her kommer også abrikos og mere lime. Den flotte syre er balanceret og længden overraskende lang. Macabeo kan være en af Spaniens bedste køb i hvidvin og det gælder absolut denne vin.
Nyd til seafood, sommersalater og som en forfriskende aperitif.

09/11/2025

2020 El Casetero Garnacha

DKK 79,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Bodegas Gormaz
Rødvin - Garnacha - 75 cl - 14,00 %

El Casetero Garnacha Negra serveres bedst ved 16-18 grader og giver dig en juicy, appetitlig næse med viol, blå bær, mørk blomme og lidt delikat hvid peber. Tanninerne er bløde og indbydende og helhedsindtrykket er forførende med lidt rosmarin og timian i finishen. Det er en super-trendy rødvin der viser hvad Granacha Negra kan give dig.

09/11/2025

2017 12 Linajes Crianza x

RRP DKK 169,00

DKK 160,55

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Bodegas Gormaz
Rødvin - Tempranillo - 75 cl - 14,50 %
Kåret til "Bedste Crianza" & 93 point - Din Vinguide: "Flot og velbalanceret vin med masser af intensitet i smagen. Saftig og vedvarende afslutning." xx
 
Fra mere end 80 år gamle vinstokke får du her en klassisk Tempranillo med en mørk, rubinrød farve. Næsen byder på intense aromaer af mørke frugter, vanille og brændte trænoter fra fadlagringen. I munden er vinen kompleks og velstruktureret med fløjlsagtige tanniner. Smagen byder på modne, røde bær og frugter samt en snert af egetræ. Finishen er fyldig, lang og smagfuld. 
 
09/11/2025

2018 Poggio gli Angeli

DKK 151,05

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Fattoria La Gerla
Rødvin - Sangiovese - 75 cl - 13,50 %
91 point, Vinous; "...shows depths of black cherry and spicy cedar... with haunting dark florals that pull me closer to the glass. on the palate, silky textures give way to an intense mix of dark red berry fruits, both savory and sweet spices and wild herbal tones. The finish is long, as saturating spice coasts the senses,offset by juicy acids, with hints of cedar and red wild berries lingering on."
 
91 point - James Suckling: "A delicious young sangiovese with cherry, light chocolate and meat. Medium body, round tannins and a juicy finish."
 
Her får du en frisk vin med en ungdommelig charme. Duften og smagen byder på et væld af især kirsebær suppleret med andre bær. Vinen er frugtfokuseret og harmonisk med bløde tanniner. Den er alsidig og kan nydes til et bredt spektrum af retter lige fra charcuteri og diverse former for pasta til retter med mere tyngde såsom grillet og ovnstegt kød. 
09/11/2025

2019 Moulin-à-Vent, Couvent des Thorins

DKK 179,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Château du Moulin-à-Vent
Rødvin - Gamay - 75 cl - 13,00 %
Top 100 Winery of 2021 - Wine & Spirits 
 
Couvent des Thorins er en exceptionel, rig og koncentreret vin, der præcist udtrykker, hvad appellationen Moulin à Vent handler om: Terroir drevne vine med stor lagringsevne, dybde, kompleksitet og kraft, uden at det går ud over finessen og elegancen. Duften er fantastisk med lag på lag af modne sorte og røde bær. Dyb fyldig og rig på ganen med fornem mineralitet og en lang blød finish. Som Bourgogne guruen, Allen Meadows, udtrykker det, så er vinene fra Château du Moulin à Vent i en klasse for sig, "..imposing wine and is not even remotely close to the fruity and exuberant Beaujolais of popular image."
09/11/2025

2019 Barbera d'Asti

DKK 69,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Antico Monastero
Rødvin - Barbera - 75 cl - 13,50 %

Her får du en typisk Barbera med en indbydende duft og smag af saftige røde bær. Den har en silkeblød tekstur med runde tanniner og en livgivende, sprød syre, som gør vinen frisk og appetitlig. Det er en alsidig madvin, som smager fortræffeligt til retter med pasta, risotto, hvid fisk, kylling, svinekød og milde oste.

09/11/2025

2020 Grüner Veltliner

DKK 103,55

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Gruber Röschitz
Hvidvin - Grüner Veltliner - 75 cl - 12,50 %

Röschitz serien står for friske, rene og finesserige vine med udtalt mineralitet og druekarakter. Vinifikationen med både gæring og lagring på tanke af rustfrit stål sigter da også på at bevare frugten og friskheden optimalt. Duften byder på svagt urtekrydret og ekstremt livlig Grüner Veltliner frugt.  Smagen er krystal klar, med noter af æble og hvid peber. En vin, der får til at længes efter den næste slurk, det næste glas. Perfekt til spæde grøntsager, lys fisk, sushi eller fjerkræ med bacon. 

09/11/2025

2020 Ried Hundspoint Grüner Veltliner

DKK 99,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Gruber Röschitz
Hvidvin - Grüner Veltliner - 75 cl - 13,00 %

Hundspoint marken ligger med en sydlig eksponering på et tyndt toplag af "löss" jorde, placeret direkte på grundfjeldet. Gæring og lagring på tanke af rustfrit stål sigter på at bevare frugten og friskheden optimalt. Duften er intens, præcis, mineralsk og ekstremt frisk og elegant. Smagen er blomstrende, frisk og med udtalt og ekstremt appetitlig mineralitet med fine noter af ananas og passionsfrugt. Perfekt til spæde grøntsager, lys fisk, sushi, tapas eller fjerkræ.  

09/11/2025

2019 Praesulis Sauvignon Blanc

DKK 259,00

Template file not found (in RenderRazorTemplate()): E:\Dynamicweb.net\Solutions\dev\r4\swift.qa.dw10.dev02.dynamicweb.dk\Files\Templates\List.cshtml
Markus Prackwieser Gump Hof
Hvidvin - Weissburgunder - 75 cl - 14,00 %

Gump Hof's Sauvignon Blanc gærer og lagrer i en kombination af rustfri ståltanke og store, brugte egetræsfade. Det resulterer i en ambitiøs Sauvignon Blanc, som kandiderer til at være blandt de allerbedste i Alto Adige. Vinen er pivhamrende frisk, intens og tør. Den er knivskarp med fine og saftige frugtaromaer, som slutter af med en bittersød finish, der pirrer sanserne og inviterer til endnu en tår.

Error executing template "CookieWarning/Cookies.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_521a3bf644fe4b00a93d9dad71795d02.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 99
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 21
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 749

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb.Environment; 3 4 @{ 5 var categories = CookieManager.GetCategories(); 6 7 string cookieNoticeLink = Pageview.AreaSettings.GetLink("CookiePolicyLink") != null ? Pageview.AreaSettings.GetLink("CookiePolicyLink").Url : ""; 8 string privacyPolicyLink = Pageview.AreaSettings.GetLink("PrivacyPolicyLink") != null ? Pageview.AreaSettings.GetLink("PrivacyPolicyLink").Url : ""; 9 int cookieNoticePageID = Pageview.AreaSettings.GetLink("CookiePolicyLink") != null ? Pageview.AreaSettings.GetLink("CookiePolicyLink").PageId : 0; 10 int privacyPolicyPageID = Pageview.AreaSettings.GetLink("PrivacyPolicyLink") != null ? Pageview.AreaSettings.GetLink("PrivacyPolicyLink").PageId : 0; 11 string googleTagManagerID = Pageview.AreaSettings.GetString("GoogleTagManagerID"); 12 13 string layout = Pageview.AreaSettings.GetRawValueString("CookieLayout", "modal"); 14 15 layout = Pageview.Page.ID == cookieNoticePageID || Pageview.Page.ID == privacyPolicyPageID ? "both" : layout; 16 } 17 18 @if (!Pageview.IsVisualEditorMode) { 19 if (layout == "banner" || layout == "both") 20 { 21 string bannerTheme = !string.IsNullOrWhiteSpace(Pageview.AreaSettings.GetRawValueString("CookieBannerTheme")) ? " theme " + Pageview.AreaSettings.GetRawValueString("CookieBannerTheme").Replace(" ", "").Trim().ToLower() : "theme light"; 22 23 <div class="position-fixed bottom-0 w-100 shadow @bannerTheme" id="dwCookieBanner"> 24 <div class="align-items-center grid p-3"> 25 @if (layout == "banner") 26 { 27 <div class="g-col-12 g-col-md-6 g-col-lg-8"> 28 <span>@Translate("By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing")</span> 29 </div> 30 <div class="g-col-12 g-col-md-6 g-col-lg-4"> 31 <div class="grid grid-1 grid-sm-2"> 32 <button type="button" onclick="setOptInCookie(2)" class="btn btn-primary" id="CookiesAcceptAll"> 33 @Translate("Accept all") 34 </button> 35 <button type="button" onclick="setOptInCookie(1)" class="btn btn-secondary" id="CookiesDeclineAll"> 36 @Translate("Decline") 37 </button> 38 </div> 39 </div> 40 } 41 @if (layout == "both") 42 { 43 <div class="g-col-12 g-col-lg-6 g-col-xxl-8"> 44 <span>@Translate("By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing")</span> 45 </div> 46 <div class="g-col-12 g-col-lg-6 g-col-xxl-4"> 47 <div class="grid grid-1 grid-sm-3"> 48 <button type="button" class="btn btn-link" data-bs-toggle="modal" data-bs-target="#dwCookieModal"> 49 @Translate("Customize settings") 50 </button> 51 <button type="button" onclick="setOptInCookie(2)" class="btn btn-secondary" id="CookiesAcceptAll"> 52 @Translate("Accept all") 53 </button> 54 <button type="button" onclick="setOptInCookie(1)" class="btn btn-secondary" id="CookiesDeclineAll"> 55 @Translate("Decline") 56 </button> 57 </div> 58 </div> 59 } 60 </div> 61 </div> 62 } 63 64 if (layout == "modal" || layout == "both") 65 { 66 string modalTheme = !string.IsNullOrWhiteSpace(Pageview.AreaSettings.GetRawValueString("CookieModalTheme")) ? " theme " + Pageview.AreaSettings.GetRawValueString("CookieModalTheme").Replace(" ", "").Trim().ToLower() : "theme light"; 67 68 <div class="modal fade" id="dwCookieModal"> 69 <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" style="max-width:560px;"> 70 <div class="modal-content @modalTheme"> 71 <div style="overflow-y:auto;overflow-x:hidden"> 72 <div class="p-3 p-md-4 overflow-auto" style="max-height:50vh;"> 73 <div class="h3 mb-3">@Translate("You control your data")</div> 74 <p>@Translate("We and our partners use technologies, including cookies, to collect information about you for various purposes, including"):</p> 75 <ol> 76 <li>@Translate("Functionality")</li> 77 <li>@Translate("Statistics")</li> 78 <li>@Translate("Marketing")</li> 79 </ol> 80 <p>@Translate("By clicking 'Accept All' you consent to all these purposes. You can also choose to indicate what purposes you will consent to using the custom selections and then click 'Accept selected'").</p> 81 82 @if (!string.IsNullOrEmpty(cookieNoticeLink) || !string.IsNullOrEmpty(privacyPolicyLink)) 83 { 84 <p>@Translate("You can read more about our use of cookies and other technologies, as well as our collection and processing of personal data by clicking here"):</p> 85 } 86 87 @if (!string.IsNullOrEmpty(cookieNoticeLink)) 88 { 89 <a href="@cookieNoticeLink" class="d-block mb-3" id="CookiesReadModeAbout">@Translate("Read more about Cookies")</a> 90 } 91 @if (!string.IsNullOrEmpty(privacyPolicyLink)) 92 { 93 <a href="@privacyPolicyLink" class="d-block" id="CookiesPrivacyPolicy">@Translate("Our privacy policy")</a> 94 } 95 </div> 96 97 <div class="p-3 px-md-4 border-top"> 98 <div class="grid grid-1 grid-sm-2 gap-3"> 99 <button type="button" onclick="setOptInCookie(1)" class="btn btn-secondary" data-bs-dismiss="modal" id="dwCookieDeclineAll">@Translate("Decline")</button> 100 @if (categories.Any()) 101 { 102 <button type="button" onclick="acceptCustomSetup()" class="btn btn-secondary d-none" data-bs-dismiss="modal" id="dwCookieAcceptSelected">@Translate("Accept selected")</button> 103 } 104 <button type="button" onclick="setOptInCookie(2)" class="btn btn-secondary" data-bs-dismiss="modal" id="dwCookieAcceptAll">@Translate("Accept All")</button> 105 </div> 106 </div> 107 108 @if (categories.Any()) 109 { 110 int categoriesCount = 0; 111 int totalCategories = categories.Count(); 112 113 <form id="dwCookieModalCustomForm" method="post" action="/Admin/Public/CookieOptInLevelConfig.aspx"> 114 <input type="hidden" name="cmd" value="SetCookieOptInLevel"> 115 <input type="hidden" name="OptInLevel" id="OptInLevel" value="1"> 116 <div class="grid grid-2 grid-sm-4 gap-0 px-md-3 border-top border-1"> 117 <div class="p-3"> 118 <label class="form-check-label" for="dwCookieNecessary"><span>@Translate("Necessary")</span></label> 119 <div class="form-check form-switch form-control-lg py-0"> 120 <input class="form-check-input opacity-100" type="checkbox" id="dwCookieNecessary" checked disabled style="background-color: rgba(0,0,0,0.1);"> 121 </div> 122 </div> 123 @foreach (var category in categories) 124 { 125 string border = categoriesCount < (totalCategories - 1) ? "" : ""; 126 127 <div class="p-3 @(border)"> 128 <label class="form-check-label" for="CookieCategory_@category"><span>@Translate(category)</span></label> 129 <div class="form-check form-switch form-control-lg py-0"> 130 <input class="form-check-input js-checkbox" type="checkbox" name="OptInCategory" value="@category" id="CookieCategory_@category" onchange="toggleAcceptSelected()" style="background-color: rgba(0,0,0,0.1);"> 131 </div> 132 </div> 133 categoriesCount++; 134 } 135 </div> 136 </form> 137 } 138 </div> 139 </div> 140 </div> 141 </div> 142 } 143 144 145 <script> 146 async function setOptInCookie(optInLevel) { 147 let response = await fetch("/admin/public/CookieOptInLevelConfig.aspx?cmd=SetCookieOptInLevel&OptInLevel=" + optInLevel); 148 @if (!string.IsNullOrWhiteSpace(googleTagManagerID)){ <text> 149 if (optInLevel == '2') { 150 consentGrantedAll(); 151 } 152 </text> 153 } 154 155 if (response.ok) { 156 if (document.querySelector("#dwCookieBanner")) { 157 document.querySelector("#dwCookieBanner").classList.add("d-none"); 158 } 159 document.location.reload(); 160 return false; 161 } else { 162 return false; 163 } 164 } 165 166 async function acceptCustomSetup() { 167 var form = document.querySelector("#dwCookieModalCustomForm"); 168 169 let formData = new FormData(form); 170 var fetchOptions = { 171 method: 'POST', 172 body: formData 173 }; 174 175 for (const value of formData.values()) { 176 console.log(value); 177 if (value == 'Marketing') { console.log('Granting marketing cookies') consentGrantedMarketing(); 178 } 179 if (value == 'Statistical') { 180 console.log('Granting statistical cookies') 181 consentGrantedAnalyticsStorage(); 182 } 183 } 184 185 186 let response = await fetch(form.action, fetchOptions); 187 188 if (response.ok) { 189 if (document.querySelector("#dwCookieBanner")) { 190 document.querySelector("#dwCookieBanner").classList.add("d-none"); 191 } 192 document.location.reload(); 193 return false; 194 } else { 195 return false; 196 } 197 } 198 199 200 function consentGrantedAll() { 201 consentGrantedMarketing(); 202 consentGrantedAnalyticsStorage(); 203 } 204 function consentGrantedMarketing() { 205 consentGrantedAdStorage(); 206 consentGrantedAdUserData(); 207 consentGrantedAdPersonalization(); 208 } 209 210 function consentGrantedAdStorage() { 211 if (!window.dataLayer) return; 212 gtag('consent', 'update', { 213 'ad_storage': 'granted' 214 }); 215 } 216 217 function consentGrantedAdUserData() { 218 if (!window.dataLayer) return; 219 gtag('consent', 'update', { 220 'ad_user_data': 'granted' 221 }); 222 } 223 224 function consentGrantedAdPersonalization() { 225 if (!window.dataLayer) return; 226 gtag('consent', 'update', { 227 'ad_personalization': 'granted' 228 }); 229 } 230 231 function consentGrantedAnalyticsStorage() { 232 if (!window.dataLayer) return; 233 gtag('consent', 'update', { 234 'analytics_storage': 'granted' 235 }); 236 } 237 238 function toggleAcceptSelected() { 239 var cookieCalegoriesElement = document.querySelector("#dwCookieModalCustomForm"); 240 var enableAcceptSelected = false; 241 242 cookieCalegoriesElement.querySelectorAll(".js-checkbox").forEach(function (field) { 243 if (field.checked == true) { 244 enableAcceptSelected = true; 245 } 246 }); 247 248 if (enableAcceptSelected) { 249 document.querySelector("#dwCookieDeclineAll").classList.add("d-none"); 250 document.querySelector("#dwCookieAcceptSelected").classList.remove("d-none"); 251 } else { 252 document.querySelector("#dwCookieDeclineAll").classList.remove("d-none"); 253 document.querySelector("#dwCookieAcceptSelected").classList.add("d-none"); 254 } 255 } 256 257 function showCookieModal() { 258 var cookieModal = new bootstrap.Modal(document.querySelector('#dwCookieModal'), { 259 backdrop: 'static' 260 }); 261 cookieModal.show(); 262 } 263 </script> 264 265 if (layout == "modal") 266 { 267 <script type="module"> 268 showCookieModal(); 269 </script> 270 } 271 } 272