Produkter fra
leverandørerne
Herunder kan du gå på opdagelse blandt interessante produkter fra potentielle og eksisterende leverandører til din forretning.
Er du på udkig efter noget specifikt, kan du benytte søgefeltet.
Indhold vises på denne side på baggrund af leverandørernes
eget valg af speciale- og interesseområder.
Error executing template "Designs/exhibition_site/QueryPublisher/MCH365-products-with-filters.cshtml"
System.Exception: _dynamicwebProduct is null. Settings are: {"Product":null,"Id":"PP3c3d60141c5e130268ec9a693e48","LanguageId":null,"VariantId":"","PrimaryVariantId":"","EmbeddedInModelList":true}
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 749
at Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce.ProductProduct.Populate(ProductSettings settings) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Models\Frontend\Ecommerce\ProductProduct.cs:line 137
at Co3.MCH.Website.Frontend.Services.Ecommerce.ProductService.GetEspressoProduct(ProductSettings settings, String key) in C:\Users\ThomasLarsen\source\repos\co3.mch\Co3.MCH.Website.Frontend\Services\Ecommerce\ProductService.cs:line 59
at CompiledRazorTemplates.Dynamic.RazorEngine_12b4f70146b74fa19430f6ff2f84334f.<>c__DisplayClass1_0.<Execute>b__0(LoopItem product) in E:\Websites\mch365.espresso5.dk\Files\Templates\Designs\exhibition_site\QueryPublisher\MCH365-products-with-filters.cshtml:line 87
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_12b4f70146b74fa19430f6ff2f84334f.Execute() in E:\Websites\mch365.espresso5.dk\Files\Templates\Designs\exhibition_site\QueryPublisher\MCH365-products-with-filters.cshtml:line 83
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 Co3.Espresso.Website.Models.FrontEnd
2 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce
3 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars
4 @using Co3.Espresso.Website.Models.FrontEnd.Settings
5 @using Co3.Espresso.Website.Services
6 @using Co3.MCH.Website.Frontend.Models.Frontend.Ecommerce
7 @using Co3.MCH.Website.Frontend.Models.Frontend.Users
8 @using Dynamicweb
9 @using Dynamicweb.Ecommerce.ProductCatalog
10 @using Dynamicweb.Frontend
11 @using ProductService = Co3.MCH.Website.Frontend.Services.Ecommerce.ProductService
12 @using System.Web
13 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module
14 15 16 @{
17 bool showFilters = Espresso.Item.FiltersShow == "True";
18 EspressoSort sort = ProductListService.Instance.GetSort();
19 string assetType = Espresso.Item.Type;
20 string q = HttpUtility.HtmlAttributeEncode( HttpContext.Current.Request[ "q" ] );
21 22 UserContext.Current.UpdateLatestProductListPageIds( assetType, PageView.Current().Page.ID );
23 24 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate( new HandlebarsProductListTemplateSettings
25 {
26 Classes = new ClassList( "e-productlist js-e-productlist js-e-require" ),
27 HeaderClasses = new ClassList( "col-12 border-bottom" ),
28 MainClasses = new ClassList( showFilters ? "col-12 col-lg-9 col-xl-9" : "col-12" ),
29 AsideClasses = new ClassList( "col-12 col-lg-3 col-xl-3" ),
30 FooterClasses = new ClassList( "col-12 col-lg-3 col-xl-3" ),
31 PageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetInteger( "DwPaging.PageSize" ).ToString() : HttpContext.Current.Request[ "PageSize" ],
32 PageNumber = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetInteger( "DwPaging.CurrentPage" ).ToString() : HttpContext.Current.Request[ "PageNum" ],
33 SortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? sort.By : HttpContext.Current.Request[ "SortBy" ],
34 SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? sort.Order : HttpContext.Current.Request[ "SortOrder" ],
35 ShowFilters = showFilters,
36 ShowSorting = Espresso.Item.SortShow == "True",
37 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty
38 } );
39 40 41 List< EspressoPagingPage > productListPaging = new List< EspressoPagingPage >();
42 if ( GetLoop( "DwPaging.LoopAllPages" ).Count > 0 )
43 {
44 foreach ( LoopItem page in GetLoop( "DwPaging.LoopAllPages" ) )
45 {
46 productListPaging.Add( new EspressoPagingPage
47 {
48 Url = page.GetString( "AllPages.PageLink" ),
49 Number = page.GetString( "AllPages.PageNumber" )
50 } );
51 }
52 }
53 54 string listKey = string.Empty;
55 switch ( assetType )
56 {
57 case "article":
58 listKey = nameof( ArticleMergeProduct );
59 break;
60 case "case":
61 listKey = nameof( ArticleMergeProduct );
62 break;
63 case "articlemerge":
64 listKey = nameof( ArticleMergeProduct );
65 break;
66 case "event":
67 listKey = nameof( EventProduct );
68 break;
69 case "contact":
70 listKey = nameof( ContactPersonProduct );
71 break;
72 case "product":
73 listKey = nameof( ProductProduct );
74 break;
75 case "profile":
76 listKey = nameof( ProfileProduct );
77 break;
78 default:
79 listKey = nameof( ProductProduct );
80 break;
81 }
82 83 EspressoProductList espressoProductList = Co3.MCH.Website.Frontend.Services.Ecommerce.ProductListService.Instance.GetProductList(
84 new ProductListSettings
85 {
86 Products = GetLoop( "QueryResultItem" ).Select(
87 product => ProductService.Instance.GetEspressoProduct(
88 new ProductSettings
89 {
90 Id = product.GetString( "ID" ),
91 VariantId = product.GetString( "VariantID" ),
92 PrimaryVariantId = product.GetString( "DefaultVariantComboID" ),
93 EmbeddedInModelList = true
94 }, listKey
95 )
96 ).ToList(),
97 Paging = productListPaging,
98 PageSize = Convert.ToInt32( handlebarsProductListTemplate.PageSize ),
99 CurrentPage = Convert.ToInt32( handlebarsProductListTemplate.PageNumber )
100 }, listKey );
101102 @*if ( !string.IsNullOrEmpty( Context.Current.Request.QueryString.Get( "ListViewMode" ) ) )
103 {
104 Dynamicweb.Context.Current.Session[ "ListViewMode" ] = Context.Current.Request.QueryString.Get( "ListViewMode" );
105 }*@
106 string listViewMode = string.IsNullOrEmpty( Context.Current.Session[ "ListViewMode" ]?.ToString() ) ? "expanded" : Context.Current.Session[ "ListViewMode" ]?.ToString();
107 List< FacetOptionViewModel > listViewOptions = new List< FacetOptionViewModel >();
108 listViewOptions.Add( new FacetOptionViewModel
109 {
110 Name = "Expanded",
111 Value = "expanded",
112 Selected = listViewMode == "expanded",
113 Label = "/Files/Templates/Designs/exhibition_site/_assets/img/layout-large.svg"
114 } );
115 listViewOptions.Add( new FacetOptionViewModel
116 {
117 Name = "Condensed",
118 Value = "condensed",
119 Selected = listViewMode == "condensed",
120 Label = "/Files/Templates/Designs/exhibition_site/_assets/img/layout-small.svg"
121 } );
122 }
123124 <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">
125 <div class="row">
126 <div class="col-12">
127 <div class="d-flex">
128 <form class="js-e-productlist-form js-e-require flex-fill" data-require="selectMultiple">
129 <input name="PageNum" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageNumber )">
130 <input name="SortBy" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortBy )">
131 <input name="SortOrder" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortOrder )">
132 <input name="PageSize" type="hidden" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageSize )">
133 <input name="ProductAssetType" type="hidden" value="@HttpUtility.HtmlAttributeEncode( assetType )">
134 <input id="ListViewMode" name="ListViewMode" type="hidden" value="@listViewMode"/>
135136 @if ( Espresso.Item.SearchShow != "True" )
137 {
138 <input name="q" type="hidden" class="e-productlist-filters-search-input e-search-input form-control-plaintext js-e-search-input" value="@q">
139 }
140141 @if ( handlebarsProductListTemplate.ShowFilters )
142 {
143 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) )
144 {
145 <input name="fg" type="hidden" value="@facetGroup.GetString( "FacetGroup.Name" )">
146 }
147 }
148149 @foreach ( LoopItem queryParameter in GetLoop( "Query.Parameters" ) )
150 {
151 if ( string.IsNullOrEmpty( queryParameter.GetString( "Parameter.Value" ) ) == false )
152 {
153 if ( queryParameter.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && queryParameter.GetString( "Parameter.Name" ) != "q" )
154 {
155 <input name="@queryParameter.GetString( "Parameter.Name" )" type="hidden" value="@HttpUtility.HtmlAttributeEncode( queryParameter.GetString( "Parameter.Value" ) )">
156 }
157 }
158 }
159160 @RenderingService.Instance.PartialView( "querypublisher/partials/mch365-filters.cshtml", Espresso )
161 </form>
162163 @if ( assetType == "profile" )
164 {
165 <div class="d-none d-md-block">
166 <div class="mch365-custom-list-view-toggle js-custom-list-view-toggle ml-2">
167 <div class="d-flex ">
168 @foreach ( FacetOptionViewModel listViewOption in listViewOptions )
169 {
170 string listViewOptionName = listViewOption.Name;
171 string expandedLabel = Translate("listViewOption - Expanded", "Gittervisning");
172 string condensesLabel = Translate("listViewOption - Condensed", "Listevisning");
173174175 string cssClassSelected = listViewOption.Selected ? "active" : string.Empty;
176 <a class="@cssClassSelected d-flex align-items-center js-custom-list-view-option" data-target="#ListViewMode" data-value="@listViewOption.Value" href="/">
177 <span>
178 <i class="e-icon">@ImageService.Instance.GetSvgMarkup(listViewOption.Label)</i>
179 </span>
180 @if (listViewOptionName == "Expanded")
181 {
182 @expandedLabel
183 }
184 else
185 {
186 @condensesLabel
187 }
188 </a>
189190 }
191 </div>
192 </div>
193 </div>
194 }
195 </div>
196197 @RenderingService.Instance.PartialView( "querypublisher/partials/mch365-header.cshtml", handlebarsProductListTemplate )
198199 </div>
200201 <div class="col-12">
202 @RenderingService.Instance.PartialView( "querypublisher/partials/mch365-products.cshtml", espressoProductList )
203 @RenderingService.Instance.PartialView( "querypublisher/partials/mch365-paging.cshtml", espressoProductList )
204 </div>
205 </div>
206 </div>
207