Error executing template "Designs/eldorado-b2b/eCom/Productlist/espresso-with-filters.cshtml" System.Exception: _dynamicwebProduct is not Active. Settings are: {"Product":null,"Id":"40235","LanguageId":null,"VariantId":"","PrimaryVariantId":"","EmbeddedInModelList":false} at Co3.Espresso.Website.Models.FrontEnd.Ecommerce.EspressoProduct.Populate(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Models\FrontEnd\Ecommerce\EspressoProduct.cs:line 755 at Co3.EldoradoIndsalg.Website.Frontend.Models.Frontend.Ecommerce.EldoradoProduct.Populate(ProductSettings settings) in C:\Dynamicweb\git_DevOps\co3.eldoradoindsalg\Co3.EldoradoIndsalg.Website.Frontend\Models\Frontend\Ecommerce\EldoradoProduct.cs:line 647 at Co3.Espresso.Website.Services.ProductService.GetEspressoProduct(ProductSettings settings) in F:\TeamCity\BuildAgent 1\work\ea1444d680f7414e\Co3.Espresso.Website\Services\ProductService.cs:line 215 at CompiledRazorTemplates.Dynamic.RazorEngine_c7511e3879a6439891ca93df9c40c9ee.<>c.<Execute>b__1_0(LoopItem productLoopItem) in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\espresso-with-filters.cshtml:line 106 at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at CompiledRazorTemplates.Dynamic.RazorEngine_c7511e3879a6439891ca93df9c40c9ee.Execute() in D:\dynamicweb.net\Solutions\eldorado.new.LIVE\Application\Files\Templates\Designs\eldorado-b2b\eCom\Productlist\espresso-with-filters.cshtml:line 105 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 System.Collections.Specialized 2 @using System.Net.Http 3 @using System.Text 4 @using Co3.Espresso.Base.Extensions 5 @using Co3.Espresso.Website.Models.FrontEnd 6 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce 7 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars 8 @using Co3.Espresso.Website.Models.FrontEnd.Settings 9 @using Co3.Espresso.Website.Services 10 @using Dynamicweb.Ecommerce.Products 11 @using ProductService = Co3.Espresso.Website.Services.ProductService 12 @using System.Web 13 @using Dynamicweb 14 @using Dynamicweb.Frontend 15 @using Dynamicweb.Indexing.Querying 16 @using Dynamicweb.Modules 17 @using Newtonsoft.Json 18 @using Services = Dynamicweb.Ecommerce.Services 19 @using SortInfo = Dynamicweb.Indexing.Querying.Sorting.SortInfo 20 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module 21 @{ 22 bool showFilters = Espresso.Item.FiltersShow == "True"; 23 bool showNavigation = Espresso.Item.NavigationShow == "True"; 24 bool showHeading = Espresso.Item.HeadingShow == "True"; 25 EspressoSort sort = ProductListService.Instance.GetSort(); 26 27 28 Properties moduleProperties = PageView.Current()?.CurrentParagraph?.ModuleProperties; 29 string moduleSortBy = sort.By;// GetString( "Ecom:ProductList.SortBy" ); 30 string moduleSortOrder = sort.Order;// GetString( "Ecom:ProductList.SortOrder" ); 31 32 if ( moduleProperties != null && moduleProperties.Values.ContainsKey("QuerySortByParams") ) 33 { 34 IEnumerable< SortInfo > sortInfos = new List< SortInfo >(); 35 StringBuilder _moduleSortBy = new StringBuilder(); 36 StringBuilder _moduleSortOrder = new StringBuilder(); 37 38 if ( moduleProperties.Values[ "QuerySortByParams" ]?.ToString() != "null" ) 39 { 40 string querySortByParams = moduleProperties.Values[ "QuerySortByParams" ].ToString().Replace(""", "\""); 41 sortInfos = JsonConvert.DeserializeObject<IEnumerable<SortInfo>>(querySortByParams); 42 } else { 43 IQuery iQuery = new QueryService().LoadQuery( "EspressoProducts", "Products" ); 44 sortInfos = iQuery.SortOrder; 45 } 46 47 foreach (SortInfo sortOrder in sortInfos ) 48 { 49 _moduleSortBy.AppendLine( sortOrder.Field ); 50 _moduleSortOrder.AppendLine( sortOrder.SortDirection.ToString() == "Descending" ? "DESC" : "ASC" ); 51 } 52 moduleSortBy = _moduleSortBy.Replace(Environment.NewLine, ",").ToString(); 53 moduleSortOrder = _moduleSortOrder.Replace( Environment.NewLine, "," ).ToString(); 54 moduleSortBy = moduleSortBy.Substring( 0, moduleSortBy.Length - 1 ); 55 moduleSortOrder = moduleSortOrder.Substring( 0, moduleSortOrder.Length - 1 ); 56 } 57 58 ClassList asideClasses = new ClassList(); 59 ClassList mainClasses = new ClassList(); 60 61 if (showNavigation ) 62 { 63 asideClasses.AddClasses("col-12 col-lg-3 col-xl-2"); 64 mainClasses.AddClasses("col-12 col-lg-9 col-xl-10"); 65 } 66 else 67 { 68 asideClasses.AddClasses("d-none"); 69 mainClasses.AddClasses("col-12"); 70 } 71 72 73 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate( new HandlebarsProductListTemplateSettings 74 { 75 Classes = new ClassList( "w-100 e-productlist js-e-productlist js-e-require" ), 76 HeaderClasses = new ClassList( "col-12" ), 77 MainClasses = mainClasses, 78 AsideClasses = asideClasses, 79 FooterClasses = new ClassList( "col-12 col-lg-3 col-xl-2" ), 80 PageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetInteger( "Ecom:ProductList.PageSize" ).ToString() : HttpContext.Current.Request[ "PageSize" ], 81 PageNumber = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetInteger( "Ecom:ProductList.CurrentPage" ).ToString() : HttpContext.Current.Request[ "PageNum" ], 82 SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? moduleSortBy : HttpContext.Current.Request[ "SortBy" ], 83 SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? moduleSortOrder : HttpContext.Current.Request[ "SortOrder" ], 84 //SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? sort.By : HttpContext.Current.Request[ "SortBy" ], 85 //SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? sort.Order : HttpContext.Current.Request[ "SortOrder" ], 86 ShowFilters = showFilters, 87 ShowSorting = Espresso.Item.SortShow == "True", 88 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty 89 } ); 90 91 92 List< EspressoPagingPage > productListPaging = new List< EspressoPagingPage >(); 93 if ( GetLoop( "Ecom:ProductList.Pages" ).Count > 0 ) 94 { 95 foreach ( LoopItem page in GetLoop( "Ecom:ProductList.Pages" ) ) 96 { 97 productListPaging.Add( new EspressoPagingPage 98 { 99 Url = page.GetString( "Ecom:ProductList.Pages.Page.Url" ), 100 Number = page.GetString( "Ecom:ProductList.Pages.Page.Number" ) 101 } ); 102 } 103 } 104105 List< EspressoProduct > productListProducts = GetLoop( "Products" ).Select( 106 productLoopItem => ProductService.Instance.GetEspressoProduct( 107 new ProductSettings 108 { 109 Id = productLoopItem.GetString( "Ecom:Product.ID" ), 110 VariantId = productLoopItem.GetString( "Ecom:Product.VariantID" ), 111 PrimaryVariantId = productLoopItem.GetString( "Ecom:Product.DefaultVariantComboID" ), 112 EmbeddedInModelList = false 113 } 114 ) 115 ).ToList(); 116117 EspressoProductList espressoProductList = ProductListService.Instance.GetProductList( 118 new ProductListSettings 119 { 120 Products = productListProducts, 121 Paging = productListPaging, 122 PageSize = Convert.ToInt32( handlebarsProductListTemplate.PageSize ), 123 CurrentPage = Convert.ToInt32( handlebarsProductListTemplate.PageNumber ) 124 } 125 ); 126127128 HttpContext.Current.Items[ "CurrentGroupID" ] = Values.ContainsKey("Ecom:Group.ID") ? Values[ "Ecom:Group.ID" ] : string.Empty; 129 string groupLink = GetString("Ecom:Group.Link.Clean"); 130 string canonicalUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(groupLink); 131 var queryString = Context.Current.Request.QueryString; 132 } 133134 @SnippetStart("ProductGroupCanonical") 135 <link rel="canonical" href="@canonicalUrl" /> 136 @SnippetEnd("ProductGroupCanonical") 137138139 @using Co3.Espresso.Base.Extensions 140 @using Co3.Espresso.Base.Models 141 @using Co3.Espresso.Website.Models.FrontEnd 142 @using Co3.Espresso.Website.Models.FrontEnd.Elements 143 @using Co3.Espresso.Website.Models.FrontEnd.Settings 144 @using Co3.Espresso.Website.Services 145 @using Dynamicweb.Content 146 @using Dynamicweb.Content.Data 147 @using Dynamicweb.Core 148 @using Dynamicweb.Ecommerce 149 @using Dynamicweb.Ecommerce.Products 150 @using Dynamicweb.Ecommerce.Shops 151 @using Dynamicweb.Extensibility 152 @using Dynamicweb.Frontend 153 @using Dynamicweb.Security.Permissions 154155156 @{ 157 PageView currentPageView = PageView.Current(); 158 string areaUrlName = !string.IsNullOrEmpty( currentPageView.Area.UrlName ) ? "/" + currentPageView.Area.UrlName: ""; 159160 Group group = Services.ProductGroups.GetGroup(GetString("Ecom:Group.ID")); 161 string groupName = string.Empty; 162 string groupImage = string.Empty; 163 Shop shop = new ShopService().GetShop( PageView.Current().Area.EcomShopId ); 164 IEnumerable<Group> productGroupsPath = new List< Group >(); 165 List<dynamic> breadCrumbCollection = new List< dynamic >(); 166 string pageId = PageView.Current().Page.ID.ToString(); 167168 if (group != null) 169 { 170 groupName = group.Name; 171 groupImage = !string.IsNullOrEmpty( group.LargeImage ) ? group.LargeImage : group.ParentGroups.Count > 0 ? group.ParentGroups.FirstOrDefault()?.LargeImage : string.Empty; 172 productGroupsPath = Services.ProductGroups.FindPath(shop, group ); 173 } 174175176 foreach (ElementWithIndex< Group > _group in productGroupsPath.WithIndex() ) 177 { 178 string _link = string.Format("/Default.aspx?ID={0}&GroupID={1}", pageId, _group.Element.Id); 179 breadCrumbCollection.Add( new 180 { 181 index = _group.Index, 182 link = _link, 183 label = _group.Element.Name 184 }); 185 } 186187 ClassList sectionClasses = new ClassList(); 188189190 string hideHeaderClass = ""; 191 if ( Espresso.Item.HeadingShow == "False" ) 192 { 193 hideHeaderClass = "d-none"; 194 } 195 else 196 { 197 if(!string.IsNullOrEmpty(groupName) ) { 198 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header"); 199200 if (!string.IsNullOrEmpty(groupImage) ) 201 { 202 groupImage = ImageService.Instance.GetImageURL( $"/Files{groupImage}", 1700, 300, 5, 90 ); 203 sectionClasses.AddClasses("e-text-light e-section-height-xs"); 204 } 205 else 206 { 207 sectionClasses.AddClasses("mt-5"); 208 } 209 } 210 else 211 { 212 sectionClasses.AddClasses("e-section d-flex align-items-center eldorado-productlist-header"); 213 } 214 } 215 <script>console.log(@JsonService.Instance.ToJson(Espresso.Item.HeadingShow));</script> 216 } 217218 @RenderingService.Instance.SectionEnd() 219220 @if ( ( bool )Espresso.Page.Item[ "HeaderHide" ] == false ) 221 { 222 <section class="@sectionClasses @hideHeaderClass" style="background-image: url('@(groupImage)')"> 223 <div class="container-fluid"> 224 <div class="row"> 225 <div class="col-12 col-md-12 col-lg-12 mx-auto"> 226 <div class="row"> 227228 <div class="p p-imagetext p-imagetext-tb col-12" > 229 <div class="row"> 230 <div class="p-txt-container col-12"> 231 <h2 class="mb-0"> 232 @groupName 233 </h2> 234 </div> 235 </div> 236 </div> 237238 </div> 239 </div> 240 </div> 241 </div> 242 </section> 243 } 244 else 245 { 246 <a class="position-relative nav-link js-e-require" data-require="cart" href="@areaUrlName/shop/cart"></a> 247 } 248249250 <section class="p p-section e-section js-e-section pt-1 "> 251 <div class="container-fluid"> 252 <div class="row"> 253 <div class="col-12 mx-auto"> 254 <div class="row"> 255 <div class="p p-imagetext p-imagetext-tb col-12"> 256257 <nav class="e-breadcrumb-container @hideHeaderClass"> 258 <ol class="breadcrumb nav p-0" itemscope itemtype="https://schema.org/BreadcrumbList"> 259 <li class="breadcrumb-item"> 260 <a href="/"> 261 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( PageView.Current().Area.ID ).MenuText 262 </a> 263 </li> 264 @foreach (dynamic breadCrumbItem in breadCrumbCollection.OrderBy(bcc => bcc.index) ) 265 { 266 <li class="breadcrumb-item"> 267 <a href="@breadCrumbItem.link"> 268 @breadCrumbItem.label 269 </a> 270 </li> 271 } 272 </ol> 273 </nav> 274275276277278279280 <div class="@handlebarsProductListTemplate.Classes" data-current-page="@GetInteger( "Ecom:ProductList.CurrentPage" )" data-page-count="@GetLoop( "Ecom:ProductList.Pages" ).Count" data-page-size="@handlebarsProductListTemplate.PageSize" data-products-url="@Espresso.Item.ProductsUrl" data-filters-url="@Espresso.Item.ProductsUrl" data-require="productlist"> 281 <div class="row"> 282 <div class="col-12"> 283 @RenderingService.Instance.PartialView( "ecom/productlist/partials/header.cshtml", handlebarsProductListTemplate ) 284 </div> 285286 <div class="@handlebarsProductListTemplate.AsideClasses"> 287288 <div class="d-lg-block d-none"> 289 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-navigation.cshtml", Espresso ) 290 </div> 291292 @{ 293294 if (Values.ContainsKey("Ecom:Group.ID") ) 295 { 296 Group productGroup = Services.ProductGroups.GetGroup( Values[ "Ecom:Group.ID" ]?.ToString() ); 297 if ( productGroup != null ) 298 { 299 string productListSidebarContentPage = productGroup.GetProductGroupFieldValue< string >( "ProductListSidebarContentPage" ); 300 if ( !string.IsNullOrEmpty( productListSidebarContentPage ) ) 301 { 302 int.TryParse( productListSidebarContentPage.Split( new[] { "=" }, StringSplitOptions.RemoveEmptyEntries ).Last(), out int productListSidebarContentPageID ); 303 if ( productListSidebarContentPageID > 0 ) 304 { 305 <div class="mt-3"> 306 @RenderPageContent( productListSidebarContentPageID ) 307 </div> 308 } 309 } 310 } 311 } 312 } 313314 </div> 315316 <div class="@handlebarsProductListTemplate.MainClasses"> 317 <form class="js-e-productlist-form"> 318 <input name="PageNum" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageNumber )"> 319 <input name="SortBy" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortBy )"> 320 <input name="SortOrder" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortOrder )"> 321 <input name="PageSize" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageSize )"> 322323 @{ 324 NameValueCollection urlParams = Dynamicweb.Context.Current.Request.QueryString; 325 List< string > paramsToIgnore = new List< string >() { "PageNum", "SortBy", "SortOrder" }; 326327 if ( handlebarsProductListTemplate.ShowFilters ) 328 { 329 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) ) 330 { 331 <input name="fg" type="hidden" value="@facetGroup.GetString( "FacetGroup.Name" )"> 332 } 333 } 334335 foreach ( LoopItem queryParameter in GetLoop( "Query.Parameters" ) ) 336 { 337 if ( string.IsNullOrEmpty( queryParameter.GetString( "Parameter.Value" ) ) == false ) 338 { 339 if ( queryParameter.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && queryParameter.GetString( "Parameter.Name" ) != "q" ) 340 { 341 string dataAttrExcludeInUrlValue = "true"; 342 if ( urlParams[ queryParameter.GetString( "Parameter.Name" ) ] != null ) 343 { 344 dataAttrExcludeInUrlValue = string.Empty; 345 paramsToIgnore.Add( queryParameter.GetString( "Parameter.Name" ) ); 346 } 347348 <input name="@queryParameter.GetString( "Parameter.Name" )" type="hidden" value="@HttpUtility.HtmlAttributeEncode( queryParameter.GetString( "Parameter.Value" ) )" data-excludeinurl="@dataAttrExcludeInUrlValue"> 349 } 350 } 351 } 352353 foreach ( object urlParam in urlParams) 354 { 355 if ( !paramsToIgnore.Contains(urlParam.ToString()) && !paramsToIgnore.Contains(urlParam.ToString())) 356 { 357 <input name="@urlParam.ToString()" type="hidden" value="@HttpUtility.HtmlAttributeEncode( urlParams[urlParam.ToString()] )"> 358 } 359 } 360 } 361362363 @{ 364 Uri urlReferrer = HttpContext.Current.Request.UrlReferrer; 365 string urlBack = "/"; 366 if (urlReferrer != null ) 367 { 368 urlBack = urlReferrer.LocalPath; 369 } 370 } 371372 @if ( (bool)Espresso.Page.Item["HeaderHide"] ) 373 { 374 <a class="btn btn-sm btn-secondary mb-3 align-self-center js-e-back-link order-first arrow-left" href="@urlBack"><i class="material-icons material-icons-large d-none">arrow_back</i>Tilbage 375 </a> 376 } 377378 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-search.cshtml", Espresso ) 379380381 @RenderingService.Instance.PartialView( "ecom/productlist/partials/horizontal-filters.cshtml", Espresso ) 382 </form> 383 @RenderingService.Instance.PartialView( "ecom/productlist/partials/products.cshtml", espressoProductList ) 384 @RenderingService.Instance.PartialView( "ecom/productlist/partials/paging.cshtml", espressoProductList ) 385 @RenderingService.Instance.PartialView( "ecom/productlist/partials/footer.cshtml", handlebarsProductListTemplate ) 386 </div> 387 </div> 388 </div> 389