Hacka vitlök som Kocklandslaget
Att använda en vitlökspress är både snabbt och smidigt, men får du till tekniken så är det lika lätt att hacka vitlöken med kniv – och mycket godare! Lagkapten i Kocklandslaget – Ludwig Tjörnemo – visar hur du gör.
Att hacka och skala vitlök är som allt annat – lätt när du kan det. Med rätt teknik – och en vass kniv så fixar du hackandet på ett kick!
Error executing template "/Designs/CapoStarter/Paragraph/C-BlogProductSection.cshtml" System.FormatException: Input string was not in a correct format. at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) at System.Convert.ToDouble(String value) at CompiledRazorTemplates.Dynamic.RazorEngine_308f77f424db4689ac4ccfb336a00364.Execute() in D:\dynamicweb.net\Solutions\Capo\sundqvist.cloud.dynamicweb-cms.com\files\Templates\Designs\CapoStarter\Paragraph\C-BlogProductSection.cshtml:line 93 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.b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System.Globalization 2 @using System.Text.RegularExpressions 3 @using App_Code 4 @using Dynamicweb.Ecommerce 5 @using Dynamicweb.Ecommerce.Frontend 6 7 8 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 9 10 <section class="content-section @Model.Item.GetList("BackgroundColor").SelectedValue @Model.Item.GetList("MarginTop").SelectedValue @Model.Item.GetList("MarginBottom").SelectedValue"> 11 <div class="@Model.Item.GetList("Width").SelectedValue"> 12 13 <div class="row clearfix"> 14 <div class="col-xs-12 col-md-7 col-lg-7 TextSideOfimage-text pull-left"> 15 <div class="text-left"> 16 @Model.Item.GetValue("content") 17 </div> 18 </div> 19 <div class="col-xs-12 col-md-5 col-lg-5 pull-right"> 20 <div class="thumbnail dropdown-info" style="border-color: #f6f1f5;border-width: 8px;border-style: solid;"> 21 @{ 22 var productPageId = GetPageIdByNavigationTag("ProductsPage"); 23 var culture = new Dynamicweb.Frontend.AreaViewModel(); 24 var cultureName = CultureInfo.CurrentCulture.Name; 25 var currencySymbol = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol; 26 var currencyCode = Services.Currencies.GetDefaultCurrency().Code; 27 <!--TODO Get the vat/tax code--> 28 var vatCode = "se"; 29 var productNo = Model.Item.GetValue("ProductNumber").ToString(); 30 if( string.IsNullOrEmpty(productNo)) { return;} 31 var productToShow = Services.Products.GetProductByNumber(productNo, true); 32 if (productToShow == null) { return; } 33 var productNumberFormated = productToShow.Number; 34 var productNumberClean = productNo.Replace("/", "-"); 35 var isNews = Convert.ToBoolean(Services.Products.GetProductFieldValue(productToShow, "productNews")); 36 var isCampaigne = Convert.ToBoolean(Services.Products.GetProductFieldValue(productToShow, "productCampaign")); 37 var productTrademark = Services.Products.GetProductFieldValue(productToShow, "productTrademark").ToString(); 38 var productSeries = Services.Products.GetProductFieldValue(productToShow, "productSeries").ToString(); 39 var priceWithoutVat = productToShow.GetPrice(currencyCode, vatCode).PriceWithoutVATFormatted.ToString(); 40 var priceWithVat = productToShow.GetPrice(currencyCode, vatCode).PriceWithVATFormatted.ToString(); 41 var consumerOldProductPrice = Services.Products.GetProductFieldValue(productToShow, "OldProductPrice").ToString(); 42 var imgsrc = "/admin/public/getimage.ashx?Image=/Files/Images/ProductImages/" + productNumberClean + "/" + productNumberClean + "_1.jpg&width=250&height=250&compression=85&Crop=5&Format=jpg&altFmImage_path=/Files/Images/NoImageAvailable.png"; 43 var buttonClass = string.Empty; 44 var hideCart = Dynamicweb.Core.Converter.ToBoolean(Pageview.Area.Item["Hide_Cart"]); 45 46 bool NorwegianSite = hideCart; 47 48 if (isCampaigne && isNews) 49 { 50 <div class="labels"> 51 <button class="btn btn-small btn-danger product-flag campaign">@Translate("product_Campaign_tag", "Campaign")</button> 52 53 <button class="btn btn-small btn-default product-flag news">@Translate("product_News_tag", "News")</button> 54 </div> 55 } 56 57 else if (isNews) 58 { 59 <button class="btn btn-small btn-default product-flag news alone">@Translate("product_News_tag", "News")</button> 60 } 61 62 else if (isCampaigne) 63 { 64 <button class="btn btn-small btn-danger product-flag campaign alone">@Translate("product_Campaign_tag", "Campaign")</button> 65 } 66 } 67 68 <a href="/Default.aspx?ID=@productPageId&GroupID=@productToShow.DefaultGroup.Id&ProductID=@productToShow.Id"> 69 <div class="display-img"> 70 <img alt="@productToShow.Name" src="@imgsrc" data-original="@imgsrc" class="img-responsive lazy"> 71 </div> 72 <div class="display-name"> 73 <div class="name-info"> 74 <div class="itemBrand">@productTrademark</div> 75 <div class="itemName">@productToShow.Name</div> 76 @if (!string.IsNullOrEmpty(productSeries)) 77 { 78 <div class="itemBrand">@Translate("productListSeriesLabel", "Serie:") @productSeries</div> 79 } 80 <div class="itemNumber">@Translate("productListArticleNrLabel", "Art. nr:") @productNumberFormated </div> 81 <div class="itemPrice" id='id_@productNo'> 82 83 @{ 84 if (HelperClass.IsLoggedIn()) 85 { 86 <div> 87 @priceWithoutVat 88 </div> 89 } 90 else 91 { 92 //Campaign price graphics 93 double ConsumerOldProductPrice = Convert.ToDouble(consumerOldProductPrice); 94 ConsumerOldProductPrice = ConsumerOldProductPrice * 1.25; 95 96 if (isCampaigne && ConsumerOldProductPrice > 0) 97 { 98 var consumerOldProductPriceFormatted = ConsumerOldProductPrice.ToString("0", new CultureInfo(cultureName + currencySymbol)); 99 100 <div class="inline-price"> 101 102 <div class="old-price"> 103 @consumerOldProductPriceFormatted 104 </div> 105 <div class="campaign-price"> 106 @priceWithVat 107 </div> 108 </div> 109 } 110 else 111 { 112 <div> 113 @priceWithVat 114 </div> 115 } 116 117 } 118 } 119 </div> 120 </div> 121 </div> 122 </a> 123 124 @if (!hideCart && !NorwegianSite) 125 { 126 var gtagEvent = HelperClass.IsLoggedIn() ? "ÅF - Köp" : "Konsument - Köp"; 127 var productCardDisabledState = ""; 128 var getStockId = productToShow.Id.ToString(); 129 var stock = HelperClass.StockValue(getStockId); 130 131 if (stock <= 2) 132 { 133 productCardDisabledState = "disabled card"; 134 } 135 136 //If product are added from the checkout page we need to reload the page in order to update Klarna iframe 137 var reloadCheckout = Pageview.Page.NavigationTag == "CheckoutPage" && !HelperClass.IsLoggedIn(); 138 139 <form class="form-inline product-card-buy-button product-card-buy-button--blog @buttonClass @productCardDisabledState"> 140 141 <button id="btnBuy" 142 onclick="Cart.addToBasket(@Model.Item.PageID, '@productToShow.Id', '@productNo', this, '@reloadCheckout.ToString().ToLower()'); gtag('event', '@gtagEvent');" 143 class="btn btn-default @buttonClass" type="button" style="float: right; margin-top: -35px;"> 144 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> 145 <polygon class="st0" points="152.8 42.3 57.1 42.3 36.6 -40.7 18.7 -40.7 18.7 -54.7 47.6 -54.7 68 28.3 143 28.3 160.7 -20.7 64.6 -19.9 64.5 -33.9 180.7 -34.9 " /> 146 <path class="st0" d="M77.1 80.6c-11.9 0-21.6-9.7-21.6-21.6 0-11.9 9.7-21.6 21.6-21.6 11.9 0 21.6 9.7 21.6 21.6C98.7 70.9 89 80.6 77.1 80.6zM77.1 51.5c-4.2 0-7.6 3.4-7.6 7.6 0 4.2 3.4 7.6 7.6 7.6 4.2 0 7.6-3.4 7.6-7.6C84.7 54.9 81.3 51.5 77.1 51.5z" /> 147 <path class="st0" d="M137.4 80.6c-11.9 0-21.6-9.7-21.6-21.6 0-11.9 9.7-21.6 21.6-21.6S159 47.1 159 59C159 70.9 149.3 80.6 137.4 80.6zM137.4 51.5c-4.2 0-7.6 3.4-7.6 7.6 0 4.2 3.4 7.6 7.6 7.6s7.6-3.4 7.6-7.6C145 54.9 141.6 51.5 137.4 51.5z" /> 148 <polygon class="st0" points="124.6 -22.6 97.6 -50.9 75.4 -24.5 64.6 -33.5 96.9 -71.9 134.7 -32.3 " /> 149 <polygon class="st0" points="172.6 -23.6 133.4 -52.5 117 -36.8 107.3 -46.9 132.3 -70.7 180.9 -34.8 " /> 150 <path d="M19 5.8L19 5.8l-5.4-4 -2 1.9 -1.9-2L6.1 5.9h0l0 1.5 10.7-0.1 -2 5.5H6.5L4.2 3.6H1v1.6h2l2.3 9.2H6c-0.5 0.4-0.9 1.1-0.9 1.9 0 1.3 1.1 2.4 2.4 2.4s2.4-1.1 2.4-2.4c0-0.8-0.3-1.4-0.9-1.9h3.7c-0.5 0.4-0.9 1.1-0.9 1.9 0 1.3 1.1 2.4 2.4 2.4s2.4-1.1 2.4-2.4c0-0.8-0.4-1.4-0.9-1.9h0.2L19 5.8zM8.2 5.9L9.8 4l1.8 1.8L8.2 5.9zM13.7 5.8l-1-1 1-1 2.7 2L13.7 5.8zM7.5 17c-0.5 0-0.8-0.4-0.8-0.8 0-0.5 0.4-0.8 0.8-0.8 0.5 0 0.8 0.4 0.8 0.8C8.3 16.7 7.9 17 7.5 17zM14.2 17c-0.5 0-0.8-0.4-0.8-0.8 0-0.5 0.4-0.8 0.8-0.8 0.5 0 0.8 0.4 0.8 0.8C15 16.7 14.6 17 14.2 17z" /> 151 <polygon points="19 5.8 19 5.8 19 5.8 " /> 152 </svg> 153 @if (HelperClass.IsLoggedIn()) 154 { 155 @Translate("productBuyButtonText", "Köp"); 156 } 157 <i class="fa fa-refresh"></i> 158 159 </button> 160 </form> 161 } 162 </div> 163 </div> 164 </div> 165 </div> 166 </section> 167

Vitlökssmör med mandel och gräslök
Recepttips! En klick vitlöksmör – det passar till i stort sett vad som helst! Ludwig delar med sig av ett ljuvligt recept.
Till receptetRELATERADE produkter
Liknande läsning

Hacka lök som Kocklandslaget
Finhackad lök behövs till vart och vartannat recept. Därför är det värt att lära sig att hacka med rätt teknik. Lär dig knepen av proffskocken Anton Husa!
Läs mer
Gibrands knivguide
Att välja rätt kniv för uppgiften är viktigt för en kock, men kan ibland kännas knivigt? Sebastian Gibrand lär dig om de vanligaste knivmodellerna.
Läs mer
Kryddsmör med koriander & lime
Kryddsmör och grillat är en lyckad kombo – oavsett om det är kött, fisk eller grönsaker som står på menyn. Här är ett smörigt tips till alla korianderälskare!
Läs mer- All inspiration
- Produkttips
- Recept
- Matprofiler
- Inspiration
- Nyheter
- Knivskola
- Kocktävlingar
- Slipskola
- Skötselråd
- Knivguide