Cabernet Sauvignon

Se vores udvalg af Cabernet Sauvignon-vine her...

Error executing template "Designs/juuls/QueryPublisher/juuls-products-with-filters.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_ac506c8c186e443c859b9ef8c6f4a53b.Execute() in D:\dynamicweb.net\Solutions\twodayco3\juulsvin.cloud.dynamicweb-cms.com\Files\Templates\Designs\juuls\QueryPublisher\juuls-products-with-filters.cshtml:line 95
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 Co3.Espresso.Website.TemplateBases.Paragraphs.Module 2 @using System.Web 3 @using Co3.Espresso.Website.Services 4 @using Co3.Espresso.Website.Models.FrontEnd 5 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce 6 @using Co3.Espresso.Website.Models.FrontEnd.Settings 7 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars 8 @using Co3.Juuls.Frontend.Models.Frontend.Ecommerce 9 @using Co3.Juuls.Website.Frontend.Services 10 @using Dynamicweb 11 @using Dynamicweb.Controls 12 @using Dynamicweb.Ecommerce.Orders.Discounts 13 @using Dynamicweb.Frontend 14 @using Dynamicweb.Security.UserManagement 15 16 @{ 17 bool showFilters = Espresso.Item.FiltersShow == "True"; 18 EspressoSort sort = ProductListService.Instance.GetSort(); 19 20 HttpCookie productlistViewModeCookie = HttpContext.Current.Request.Cookies["juuls.viewmode"]; 21 string viewMode = "grid"; 22 23 if (productlistViewModeCookie != null) 24 { 25 viewMode = productlistViewModeCookie.Value; 26 } 27 28 List<string> viewmodes = new List<string>() { "grid", "list" }; 29 30 List<string> contactPersons = UserService.Instance.GetContactPersons(); 31 32 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate(new HandlebarsProductListTemplateSettings() 33 { 34 Classes = new ClassList("e-productlist js-e-productlist js-e-require"), 35 HeaderClasses = new ClassList("col-12 border-bottom"), 36 MainClasses = new ClassList((showFilters || contactPersons.Any()) ? "col-12 col-lg-9 col-xl-9" : "col-12"), 37 AsideClasses = new ClassList("col-12 col-lg-3 col-xl-3"), 38 FooterClasses = new ClassList("col-12 col-lg-3 col-xl-3"), 39 PageSize = string.IsNullOrEmpty(HttpContext.Current.Request["PageSize"]) ? GetInteger("DwPaging.PageSize").ToString() : HttpContext.Current.Request["PageSize"], 40 PageNumber = string.IsNullOrEmpty(HttpContext.Current.Request["PageNum"]) ? GetInteger("DwPaging.CurrentPage").ToString() : HttpContext.Current.Request["PageNum"], 41 SortBy = string.IsNullOrEmpty(HttpContext.Current.Request["SortBy"]) ? sort.By : HttpContext.Current.Request["SortBy"], 42 SortOrder = string.IsNullOrEmpty(HttpContext.Current.Request["SortOrder"]) ? sort.Order : HttpContext.Current.Request["SortOrder"], 43 ShowFilters = showFilters, 44 ShowSorting = Espresso.Item.SortShow == "True", 45 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty 46 }); 47 48 @*@GetInteger( "DwPaging.CurrentPage" ).ToString()*@ 49 50 List<EspressoPagingPage> productListPaging = new List<EspressoPagingPage>(); 51 if (GetLoop("DwPaging.LoopAllPages").Count > 0) 52 { 53 foreach (LoopItem page in GetLoop("DwPaging.LoopAllPages")) 54 { 55 productListPaging.Add(new EspressoPagingPage() 56 { 57 Url = page.GetString("AllPages.PageLink"), 58 Number = page.GetString("AllPages.PageNumber") 59 }); 60 } 61 } 62 63 List<EspressoProduct> productListProducts = GetLoop("QueryResultItem").Select( 64 productLoopItem => ProductService.Instance.GetEspressoProduct( 65 new ProductSettings() 66 { 67 Id = productLoopItem.GetString("ID"), 68 VariantId = productLoopItem.GetString("VariantID"), 69 PrimaryVariantId = productLoopItem.GetString("DefaultVariantComboID"), 70 EmbeddedInModelList = true 71 } 72 ) 73 ).ToList(); 74 75 EspressoProductList espressoProductList = ProductListService.Instance.GetProductList( 76 new ProductListSettings() 77 { 78 Products = productListProducts, 79 Paging = productListPaging, 80 PageSize = Convert.ToInt32(handlebarsProductListTemplate.PageSize), 81 CurrentPage = Convert.ToInt32(handlebarsProductListTemplate.PageNumber) 82 } 83 ); 84 85 if (viewMode == "list") 86 { 87 handlebarsProductListTemplate.Classes.AddClasses("juuls-viewmode-list"); 88 } 89 90 string categoryId = PageView.Current().Item["EcomGroup"]?.ToString(); 91 92 if (string.IsNullOrEmpty(categoryId)) 93 { 94 LoopItem categoryIdParam = GetLoop("Query.Parameters").FirstOrDefault(pm => pm.GetString("Parameter.Name") == "GroupId"); 95 categoryId = categoryIdParam.GetString("Parameter.Value"); 96 } 97 98 RelewiseService.Instance.TrackCategoryView(categoryId); 99100 } 101102 <div class="@handlebarsProductListTemplate.Classes" data-current-page="@GetInteger( "DwPaging.CurrentPage" )" data-page-count="@GetLoop( "DwPaging.LoopAllPages" ).Count" data-page-size="@handlebarsProductListTemplate.PageSize" data-products-url="@Espresso.Item.ProductsUrl" data-filters-url="@Espresso.Item.ProductsUrl" data-require="productlist"> 103 <div class="row"> 104 <div class="col-12"> 105 @RenderingService.Instance.PartialView("../ecom/productlist/partials/header.cshtml", handlebarsProductListTemplate) 106 </div> 107108109 <div class="@handlebarsProductListTemplate.AsideClasses"> 110111112 @RenderingService.Instance.PartialView("../ecom/productlist/partials/filters-navigation.cshtml", Espresso) 113114 @if (contactPersons.Any()) 115 { 116 <div class="p col-12 border-top"> 117 <h3 class="mt-2">Har du brug for hjælp?</h3> 118 @foreach (string contactPerson in contactPersons) 119 { 120 @contactPerson 121 } 122 </div> 123 } 124 @if (Espresso.Item.ShowSpotProduct == "True") 125 { 126 @RenderingService.Instance.PartialView("../ecom/productlist/partials/spot-product.cshtml", Espresso); 127 } 128129 <form class="js-e-productlist-form"> 130131 @if (handlebarsProductListTemplate.ShowFilters) 132 { 133 foreach (LoopItem facetGroup in GetLoop("FacetGroups")) 134 { 135 <input name="fg" type="hidden" value="@facetGroup.GetString("FacetGroup.Name")"> 136 } 137 } 138139 @foreach (LoopItem queryParameter in GetLoop("Query.Parameters")) 140 { 141 if (string.IsNullOrEmpty(queryParameter.GetString("Parameter.Value")) == false) 142 { 143 if (queryParameter.GetBoolean("Parameter.IsHandledAsFacet") == false) 144 { 145 <input name="@queryParameter.GetString("Parameter.Name")" type="hidden" value="@HttpUtility.HtmlAttributeEncode(queryParameter.GetString("Parameter.Value"))"> 146 } 147 } 148 } 149150151 <div class="d-lg-flex d-none position-relative" style="min-height: 6.4em;"> 152153 <div id="js-e-productlist-filters" class="w-100"> 154 <div class="d-flex justify-content-center w-100"> 155 @RenderingService.Instance.PartialView("_partials/loading-spinner.cshtml") 156 </div> 157 <div class="position-absolute" style="height:0;opacity: 0;"> 158 @foreach (LoopItem facetGroup in GetLoop("FacetGroups")) 159 { 160 foreach (LoopItem facetItem in facetGroup.GetLoop("Facets")) 161 { 162 if (facetItem.GetLoop("FacetOptions").Any()) 163 { 164 foreach (LoopItem facetOption in facetItem.GetLoop("FacetOptions")) 165 { 166 @facetOption.GetString("FacetOption.Value") 167 @:=> <input id="@(string.Format("facet_{0}_{1}", facetItem.GetString("Facet.QueryParameter"), facetOption.GetInteger("FacetOptions.LoopCounter")))" name="@facetItem.GetString("Facet.QueryParameter")" type="checkbox" value="@facetOption.GetString("FacetOption.Value")" @(facetOption.GetBoolean("FacetOption.Selected") ? "checked" : string.Empty)> 168 } 169 } 170 } 171 } 172 </div> 173174175 @RenderingService.Instance.PartialView("../ecom/productlist/partials/filters-vertical.cshtml", Espresso) 176177 </div> 178179180 </div> 181182183 </form> 184185186187188189 </div> 190191 <div class="@handlebarsProductListTemplate.MainClasses"> 192193 <form class="js-e-productlist-form"> 194 <input name="PageNum" type="hidden" value="@HttpUtility.HtmlAttributeEncode(handlebarsProductListTemplate.PageNumber)"> 195 <input name="SortBy" type="hidden" value="@HttpUtility.HtmlAttributeEncode(handlebarsProductListTemplate.SortBy)"> 196 <input name="SortOrder" type="hidden" value="@HttpUtility.HtmlAttributeEncode(handlebarsProductListTemplate.SortOrder)"> 197 <input name="PageSize" type="hidden" value="@HttpUtility.HtmlAttributeEncode(handlebarsProductListTemplate.PageSize)"> 198 <input name="UserId" type="hidden" value="@HttpUtility.HtmlAttributeEncode(PageView.Current().User?.ID.ToString())"> 199200201 @if (Espresso.Item.SortShow == "True") 202 { 203 <div class="d-lg-flex d-none position-relative justify-content-between flex-wrap" style="/*background: beige;*/"> 204 <div class="js-custom-vertical-filters-applied" style="flex: 1;"> 205206 <script id="js-e-handlebars-tmpl-productlist-filters-applied" type="text/x-handlebars-template"> 207208209 {{#if filtersAppliedCount}} 210 <div class="e-productlist-filters-group js-e-productlist-filters-group border-0"> 211 <div class="e-productlist-filters-group e-productlist-filters-group-summary d-flex flex-row"> 212 <div class="d-flex mb-0 small flex-wrap w-100"> 213 <span class="e-productlist-filters-group-name d-inline-flex pt-1 mr-1"><p class="mb-1 small">@Translate("eCom Productlist Filters - Selected - Text", "Selected filters"):</p></span> 214 <div class="e-productlist-filters-group-options e-productlist-filters-group-options-selected flex-wrap" style="flex: 1;"> 215216 {{#if q}} 217 <a class="bg-light p-1 e-productlist-filters-option-selected text-heading js-e-productlist-filters-remove d-flex align-items-center mb-1 text-decoration-none small" href="#"> 218 <i class="material-icons text-danger mr-1">close</i> 219 <span>@Translate("eCom Productlist Filters - Search - Text", "Search"): {{q}}</span> 220 </a> 221 {{/if}} 222 {{#each filters}} 223 {{#each selectedOptions}} 224 <a class="bg-light p-1 e-productlist-filters-option-selected text-heading js-e-productlist-filters-remove d-flex align-items-center mb-1 text-decoration-none small" href="#" data-key="{{../param}}" data-value="{{value}}"> 225 <i class="material-icons text-danger mr-1">close</i> 226 <span>{{../name}} 227 {{#compare ../param '!==' 'hasEco'}} 228229 {{#compare label '!==' 'True'}}: 230 {{label}} 231 {{/compare}} 232233 {{/compare}} 234235 </span> 236 </a> 237 {{/each}} 238 {{/each}} 239 {{#if priceRanges.selectedPriceRange}} 240 <a class="bg-light p-1 e-productlist-filters-option-selected text-heading js-e-productlist-filters-remove d-flex align-items-center mb-1 text-decoration-none small" href="#" data-key="PriceRange" data-value="{{priceRanges.selectedPriceRange}}"> 241 <i class="material-icons text-danger mr-1">close</i> 242 <span>@Translate("eCom Productlist Filters - Custom Facet - Price Range - Label", "Pris"): {{priceRanges.selectedPriceRangeText}} </span> 243 </a> 244 {{/if}} 245246 {{#compare @@root.customFacets.requestOffers '===' 'true'}} 247 <a class="bg-light p-1 e-productlist-filters-option-selected text-heading js-e-productlist-filters-remove d-flex align-items-center mb-1 text-decoration-none small is-price-range" href="#" data-key="facetDiscounts" data-value="true"> 248 <i class="material-icons text-danger mr-1">close</i> 249 <span> 250 @Translate("Productlist- Custom Facet - Offers - Text", "På tilbud lige nu") 251 </span> 252 </a> 253 {{/compare}} 254255 <a class="py-1 js-e-productlist-filters-clear-all e-productlist-filters-clear-all d-flex align-items-center mb-1 text-decoration-none text-primary small" href="#" data-key="{{../param}}" data-value="{{value}}"> 256 @(ImageService.Instance.GetSvgMarkup("/Files/Templates/Designs/juuls/_assets/img/Replay--Streamline-Sharp-Material.svg")) 257258 <span> 259260 @Translate("eCom Productlist Filter - Group Reset - Button", "Reset") 261 </span> 262 </a> 263264 </div> 265266 </div> 267 </div> 268 {{/if}} 269270 </script> 271272 </div> 273274275276277278279280 <div class="e-productlist-filters-group js-e-productlist-filters-group mr-0 pr-0 pl-lg-1 d-flex justify-content-end align-items-start flex-shrink-0"> 281 <div class="d-flex align-items-center"> 282 <p class="small text-nowrap mr-1 mb-0"><small>@Translate("eCom Productlist - Sort By - Text", "Sort by")</small></p> 283 @RenderingService.Instance.PartialView("ecom/productlist/partials/sort.cshtml", Espresso) 284 </div> 285 @* 286 @if (PageView.Current().User != null) 287 { 288 <div class="d-flex flex-fill" style="width:100px;margin-top: 2.8em;"> 289 <div class="juuls-productlist-viewmodes ml-auto"> 290 <ul class="nav mb-0"> 291 @foreach (string mode in viewmodes) 292 { 293 string viewmodeId = string.Format("juuls-productlist-viewmode-{0}", mode); 294 <li class="p-0 nav-link mb-0 js-juuls-set-viewmode-item" data-mode="@mode"> 295 <input type="radio" value="@mode" id="@viewmodeId" class="js-juuls-set-viewmode" name="juuls-productlist-viewmode" @(mode == viewMode ? "checked" : string.Empty)/> 296 <label for="@viewmodeId"> 297 <span class="material-icons"> 298 @if (mode == "list") 299 { 300 @:view_list 301 } 302 else 303 { 304 @:view_module 305 } 306 </span> 307 </label> 308 </li> 309 } 310 </ul> 311 </div> 312 </div> 313 } 314 *@ 315 </div> 316317 </div> 318 } 319 @RenderingService.Instance.PartialView("ecom/productlist/partials/filters-modal.cshtml") 320 @RenderingService.Instance.PartialView("ecom/productlist/partials/filters-brand.cshtml") 321 </form> 322323324 @RenderingService.Instance.PartialView("../ecom/productlist/partials/products.cshtml", ProductListService.Instance.GetProductList( 325 new ProductListSettings() 326 { 327 Products = GetLoop("QueryResultItem").Select( 328 productLoopItem => ProductService.Instance.GetEspressoProduct( 329 new ProductSettings() 330 { 331 Id = productLoopItem.GetString("ID"), 332 VariantId = productLoopItem.GetString("VariantID"), 333 PrimaryVariantId = productLoopItem.GetString("DefaultVariantComboID"), 334 EmbeddedInModelList = true 335 } 336 ) 337 ).ToList(), 338 Paging = productListPaging, 339 PageSize = Convert.ToInt32(handlebarsProductListTemplate.PageSize), 340 CurrentPage = Convert.ToInt32(handlebarsProductListTemplate.PageNumber) 341 } 342 ) 343 ) 344 @RenderingService.Instance.PartialView("../ecom/productlist/partials/paging.cshtml", espressoProductList 345 ) 346 @RenderingService.Instance.PartialView("../ecom/productlist/partials/footer.cshtml", handlebarsProductListTemplate) 347348 <div class="row mt-3"> 349 @if (!string.IsNullOrEmpty(Espresso.Item.SidebarContent)) 350 { 351 @RenderPageContent(int.Parse(Espresso.Item.SidebarContent)) 352 } 353 </div> 354355 </div> 356 </div> 357 </div> 358

En rigtig bøf-vin!

Cabernet Sauvignon-vine er blandt de kraftigere rødvine. Den har ret høje tanniner og en kompleks karakter med noter af sort peber og tobak - Det er ikke bare ren solbærsaft! 

Hvor dyrkes Cabernet Sauvignon?

Trods Cabernet Sauvignons nuværende enorme popularitet, er det ikke en gammel drue. Den er opstået i 1600-tallet som en krydsning mellem Cabernet Franc og Sauvignon Blanc. Altså en blanding af en rød- og en hvidvinsdrue. Der er også aroma-træk fra begge disse druer i nutidens Cabernet Sauvignon. Solbær fra Cabernet Franc, og den græs-/halmagtige aroma fra Sauvignon Blanc.

Cabernet Sauvignon er ganske enkelt verdens mest berømte og mest udbredte drue. Den findes overalt i verden. En af grundene er at Cabernet Sauvignon kan gros og produceres i så mange forskellige klimaer.

Cabernet Sauvignon-druens primære forekomster er; Frankrig, Californien, Chile, Australien, Sydafrika, Spanien og Toscana.

Cabernet Sauvignon blev internationalt anerkendt gennem sin optræden i Bordeaux-vine - herunder de mest berømte, både i sin rene form, eller hvor den blandes med Merlot og Cabernet Franc. Cabernet Sauvignon dyrkes flittigt på venstrebredden af Gironde-floden, hvor den dominerer både beplantnings- og karaktermæssigt. På højrebredden dominerer Merlot.

Det klassiske Bordeaux blend

Merlot og Cabernet Sauvignon forveksles let. De to druer komplimenterer nemlig hinanden godt og findes derfor ofte i blends. Druerne bruges også meget i enkeltdruevine, men ofte ses de “hånd i hånd” -  Et perfekt makkerskab!

Hvor Merlot er kendt for sin smag af blomme og sin blødhed, er Cabernet Sauvignon kendt for sin smag af solbær og dens struktur. Cabernet Sauvignon’s drueskal er tykkere end hos Merlot-druen. Derfor vil du opleve mere tannin, som giver rygrad og struktur i vinen.

Hvad er en god Cabernet Sauvignon vin?

En ung Cabernet Sauvignon kan virke mere stram i strukturen og være mere moden i frugten. Med alderen bløder vinen op og åbner for at hav af spændende smage og dufte. 
Store Cabernet Sauvignon-vine har et kæmpe lagringspotentiale!

Cabernet Sauvignon til maden 

Cabernet Sauvignon er en fremragende madvin. Den omtales ofte som en rigtig bøf-vin.
Den er særligt god til kraftige kødretter, gerne okse eller lam med kraftigt tilbehør som fx rodfrugter. 

Alternativer til Cabernet Sauvignon

Har man sagt A må man også sige B - Det er da oplagt at anbefale en Cabernet Sauvignon-elsker at prøve en ren Merlot!

Kan du lide en rødvin med kompleksitet og rank struktur, der har mere end bare frugt, at byde på, så er Malbec også et glimrende alternativ hertil!