Error executing template "Designs/SeedsNZ/eCom/Product/Details.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_1fd102599e784a9580fdd12b10d5803e.<>c__DisplayClass4_0.<DisplayFeatureAndBenefits>b__0(TextWriter __razor_helper_writer) in C:\home\site\wwwroot\Application\Files\Templates\Designs\SeedsNZ\eCom\Product\Details.cshtml:line 156
   at CompiledRazorTemplates.Dynamic.RazorEngine_1fd102599e784a9580fdd12b10d5803e.Execute() in C:\home\site\wwwroot\Application\Files\Templates\Designs\SeedsNZ\eCom\Product\Details.cshtml:line 347
   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 Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 3 4 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 5 <!--IMPORTANT: This commented out tag is required so the tag is available to the product template extenders. Will review with DW about why --> 6 <!--$$GetString("Ecom:Product.PrimaryOrFirstGroupID") --> 7 8 @helper RenderBanner(string colour) 9 { 10 <div class="container-fluid banner-wrap"> 11 <div class="banner overflow-img-wrap"> 12 <img src="/Files/Templates/Designs/SeedsNZ/assets/img/1x1.png" alt="@GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.AltTextTag)" 13 data-image-desktop="@GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.DesktopBannerTag)" 14 data-image-handset="@GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.HandsetBannerTag)" 15 class="img-srcset"> 16 @if (!string.IsNullOrWhiteSpace(GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.StrapLineTag))) 17 { 18 <div class="strapline-wrap"> 19 <div class="max-width-wrap"> 20 <div class="wrap-md-offset-1-leftright"> 21 <div class="strapline-inner-wrap"> 22 23 <h1 class="first-line truncate-text" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1" style="overflow-wrap: break-word;">@GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.StrapLineTag)</h1> 24 <h2 class="second-line truncate-text" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1" style="color:@colour; overflow-wrap: break-word;">@GetString(PgwSeeds.TemplateExtender.GroupBannerImageService.StrapLine2Tag)</h2> 25 </div> 26 </div> 27 </div> 28 </div> 29 } 30 </div> 31 </div> 32 } 33 34 @RenderBanner(GetString("Ecom:Product.CategoryField.SeedsNZ_Common.CatalogColour.Value")) 35 36 <div class="container product-detail"> 37 38 39 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 40 41 42 @RenderNavigation(new 43 { 44 id = "breadcrumbs", 45 template = @"..\Navigation\breadcrumb.xslt", 46 expandmode="Pathonly" 47 }) 48 <div class="product-head wrap-md-offset-1-leftright"> 49 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 50 @using PgwSeeds.SeedsNZ 51 @using PgwSeeds.Common 52 53 @helper DisplayProductTitleAndLogo(Dictionary<string, object> product) 54 { 55 56 57 58 var title = product.GetString("Ecom:Product:Field.Title.Value"); 59 var subtitle = product.GetString("Ecom:Product:Field.Subtitle.Value"); 60 var subtitleColor = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.CatalogColour.Value"); 61 var primaryLogo = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.PrimaryLogo.Value"); 62 primaryLogo = !string.IsNullOrWhiteSpace(primaryLogo) ? primaryLogo.SmallImage() : string.Empty; 63 var primaryLogoAltText = ""; 64 var secondaryLogo = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.SecondaryLogo.Value"); 65 var secondaryLogoAltText = ""; 66 bool promote = product.GetBoolean("Ecom:Product.CategoryField.SeedsNZ_Common.PromoteAsNew.Value"); 67 68 <div class="row"> 69 <div class="col-xs-12 col-sm-6 product-title-wrap"> 70 <div class="va-middle"> 71 <h1>@title&nbsp;</h1> 72 <h2 class="product-subtitle" style="color:@subtitleColor"> 73 @if (!string.IsNullOrWhiteSpace(subtitle)) 74 { 75 @subtitle 76 } 77 </h2> 78 </div> 79 <div class="va-middle promo-tags-wrap pull-right-xs-max"> 80 @if (!string.IsNullOrWhiteSpace(secondaryLogo)) 81 { 82 <img src="@secondaryLogo" alt="@secondaryLogoAltText"> 83 } 84 </div> 85 @if (promote) 86 { 87 <div class="va-middle promo-tags-wrap pull-right-xs-max"> 88 <i class="sprite-icon sprite-icon-new" title="New"></i> 89 </div> 90 } 91 <div class="clearfix"></div> 92 </div> 93 <div class="col-xs-12 col-sm-6"> 94 <div class="product-logo-wrapper text-right-sm"> 95 @if (!string.IsNullOrWhiteSpace(primaryLogo)) 96 { 97 <img src="@primaryLogo" alt="@primaryLogoAltText"> 98 } 99 100 </div> 101 </div> 102 </div> 103 } 104 @using Dynamicweb.Core 105 @using Dynamicweb.Ecommerce.Products 106 @using Dynamicweb.Ecommerce.Variants 107 @using Dynamicweb.Rendering; 108 @using PgwSeeds.SeedsNZ 109 @using PgwSeeds.Common 110 111 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 112 113 @functions { 114 private string SetDaysToGrazing(Dictionary<string, object> product) 115 { 116 string daysToGrazingFrom = product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.DaysToGrazingFrom.Value").ToString(); 117 string daysToGrazingTo = product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.DaysToGrazingTo.Value").ToString(); 118 119 if (daysToGrazingTo.IsNotNullOrEmpty() && daysToGrazingFrom.IsNotNullOrEmpty()) 120 { 121 return $"From {daysToGrazingFrom} to {daysToGrazingTo}"; 122 } 123 return null; 124 } 125 126 private string SetHeadingDateText(Dictionary<string, object> product) 127 { 128 string headingDate = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.HeadingDate.Value"); 129 string headingDateNote = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.HeadingDateNote.Value"); 130 131 if (headingDate.IsNotNullOrEmpty() && headingDateNote.IsNotNullOrEmpty()) 132 { 133 return $"{headingDate} - {headingDateNote}"; 134 } 135 if (headingDate.IsNullOrEmpty() && headingDateNote.IsNotNullOrEmpty()) 136 { 137 return headingDateNote; 138 } 139 if (headingDateNote.IsNullOrEmpty() && headingDate.IsNotNullOrEmpty()) 140 { 141 return headingDate; 142 } 143 return null; 144 } 145 } 146 147 148 @helper DisplayFeatureAndBenefits(Dictionary<string, object> product, List<RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem> variantGroupList) 149 { 150 151 var productService = new ProductService(); 152 var variantService = new VariantService(); 153 154 var keyFeatures = product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.KeyFeatures.Value"); 155 156 string sowingRate = product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.SowingRate.Value").ToString().IsNotNullOrEmpty() ? 157 product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.SowingRate.Value") + " kg/ha" : null; 158 159 string daysToGrazing = SetDaysToGrazing(product); 160 161 string growingSeasons = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.GrowingSeason.Value"); 162 163 string grazingSeasons = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.GrazingSeasons.Value"); 164 165 string potentialYield = product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.PotentialYield.Value").ToString().IsNotNullOrEmpty() ? 166 Convert.ToInt32(product.GetValue("Ecom:Product.CategoryField.SeedsNZ_Common.PotentialYield.Value")).ToString("N0") + " kgDM/ha" : null; 167 168 string utilisation = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.Utilisation.Value"); 169 170 string headingDateText = SetHeadingDateText(product); 171 172 string ploidy = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.Ploidy.Value"); 173 174 var enterpriseTypeIconLookup = new Dictionary<string, string>() { 175 176 { "Sheep", KnownImageFiles.SheepEnterpriseType }, 177 { "Beef", KnownImageFiles.BeefEnterpriseType }, 178 { "Dairy", KnownImageFiles.DairyEnterpriseType }, 179 { "Deer", KnownImageFiles.DeerEnterpriseType } 180 181 }; 182 183 var endophyteNames = new List<string> { "AR37", "AR1", "Endo-5", "Max-P", "High-Endophyte", "Low-Endophyte", "Standard-Endophyte", "Without-Endophyte", "Blank-Endophyte" }; 184 var varientgroup = variantGroupList.FirstOrDefault(x => x.GetString("Ecom:VariantGroup.Name") == "SeedsNZ_Endophyte"); 185 186 string baseEnterpriseTypes = product.GetString("Ecom:Product.CategoryField.SeedsNZ_Common.EnterpriseType.Value.Clean"); 187 string[] baseProductEnterpriseTypeList = baseEnterpriseTypes.Split(','); 188 189 190 191 <div class="row features-benefits-wrap"> 192 <div class="col-md-6 rte"> 193 @* Key Features *@ 194 @keyFeatures 195 </div> 196 <div class="col-md-6 product-tags-wrap"> 197 @* Enterprise Types - No Endophytes*@ 198 @if (varientgroup == null) 199 { 200 if (baseEnterpriseTypes.IsNotNullOrEmpty()) 201 { 202 <div class="farm-types-wrap no-margin-sm-row"> 203 <div class="farm-type-wrap"> 204 <div class="row row-same-height"> 205 <div class="col-xs-3 farm-type-name text-uppercase col-same-height"> 206 <span class="truncate-text" data-lines-sm="1" data-lines-md="1">Farm Type</span> 207 </div> 208 <div class="col-xs-7 col-md-7 farm-type-animals col-same-height"> 209 <div class="clearfix"> 210 @foreach (var enterpriseType in baseProductEnterpriseTypeList) 211 { 212 string iconPath; 213 if (enterpriseTypeIconLookup.TryGetValue(enterpriseType, out iconPath)) 214 { 215 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(iconPath)) 216 } 217 } 218 </div> 219 </div> 220 221 <div class="col-xs-2 col-md-2 farm-type-logo col-same-height" style="height: 51px;"> 222 </div> 223 </div> 224 </div> 225 </div> 226 } 227 } 228 @* Enterprise Types - Endophytes*@ 229 else 230 { 231 var baseProductId = product.GetString("Ecom:Product.ID"); 232 var baseProduct = productService.GetProductById(baseProductId, "", true); 233 var baseProductAndVariants = productService.GetProductsAndVariantsByProduct(baseProduct); 234 var allVariants = baseProductAndVariants.Where(x => x.VariantId.IsNotNullOrEmpty()); 235 <div class="farm-types-wrap no-margin-sm-row"> 236 @foreach (var endophyteName in endophyteNames) 237 { 238 foreach (Product variant in allVariants) 239 { 240 string variantName = variantService.GetVariantName(variant.VariantId); 241 if (variantName == endophyteName) 242 { 243 var allVariantEnterpriseTypes = variant.GetCategoryValue("SeedsNZ_Common", "EnterpriseType"); 244 string variantEnterpriseTypes = allVariantEnterpriseTypes != null ? allVariantEnterpriseTypes.ToString() : string.Empty; 245 string[] variantEnterpriseTypeList = variantEnterpriseTypes.Split(','); 246 string spriteIcon = variantName != "Blank-Endophyte" ? "sprite-icon sprite-icon-" + variantName.ToLower() : string.Empty; 247 248 249 <div class="farm-type-wrap"> 250 <div class="row row-same-height"> 251 <div class="col-xs-3 farm-type-name text-uppercase col-same-height" style="height: 51px;"> 252 <span class="truncate-text" data-lines-sm="1" data-lines-md="1">Farm Type</span> 253 </div> 254 <div class="col-xs-7 col-md-7 farm-type-animals col-same-height" style="height: 51px;"> 255 <div class="clearfix"> 256 @foreach (var variantEnterpriseType in variantEnterpriseTypeList) 257 { 258 string iconPath; 259 if (enterpriseTypeIconLookup.TryGetValue(variantEnterpriseType, out iconPath)) 260 { 261 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(iconPath)) 262 } 263 } 264 </div> 265 </div> 266 <div class="col-xs-2 col-md-2 farm-type-logo col-same-height" style="height: 51px;"> 267 <i class="@spriteIcon" title="@variantName"></i> 268 </div> 269 </div> 270 </div> 271 } 272 } 273 } 274 </div> 275 } 276 277 @* Product Categories Fields *@ 278 <ul class="list-unstyled"> 279 @if (sowingRate.IsNotNullOrEmpty()) 280 { 281 <li> 282 <span class="name">Sowing Rate</span> 283 <span class="value">@sowingRate</span> 284 </li> 285 } 286 287 @if (daysToGrazing.IsNotNullOrEmpty()) 288 { 289 <li> 290 <span class="name">Days to Grazing</span> 291 <span class="value">@daysToGrazing</span> 292 </li> 293 } 294 295 @if (growingSeasons.IsNotNullOrEmpty()) 296 { 297 <li> 298 <span class="name">Growing Seasons</span> 299 <span class="value">@growingSeasons.Replace(",", ", ")</span> 300 </li> 301 } 302 303 @if (grazingSeasons.IsNotNullOrEmpty()) 304 { 305 <li> 306 <span class="name">Grazing Seasons</span> 307 <span class="value">@grazingSeasons.Replace(",", ", ")</span> 308 </li> 309 } 310 311 @if (potentialYield.IsNotNullOrEmpty()) 312 { 313 <li> 314 <span class="name">Potential Yield</span> 315 <span class="value">@potentialYield</span> 316 </li> 317 } 318 319 @if (utilisation.IsNotNullOrEmpty()) 320 { 321 <li> 322 <span class="name">Utilisation</span> 323 <span class="value">@utilisation%</span> 324 </li> 325 } 326 327 @if (headingDateText.IsNotNullOrEmpty()) 328 { 329 <li> 330 <span class="name">Heading Date</span> 331 <span class="value">@headingDateText</span> 332 </li> 333 } 334 335 @if (ploidy.IsNotNullOrEmpty()) 336 { 337 <li> 338 <span class="name">Tetraploid/Diploid</span> 339 <span class="value">@ploidy</span> 340 </li> 341 } 342 </ul> 343 </div> 344 </div> 345 } 346 @DisplayProductTitleAndLogo(this.Values) 347 @DisplayFeatureAndBenefits(this.Values, GetLoop("VariantGroups")) 348 </div> 349 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 350 351 @using PgwSeeds.SeedsNZ 352 @using PgwSeeds.Common 353 354 355 @helper RenderComponent(Dictionary<string, object> product, string titleKey, string imagePathKey, string imageAlttextKey, string contentKey, string soilFertilityKey = "", 356 string pastureLifeKey = "", string grazingMethodKey = "", string numberOfGrazingkey = "") 357 { 358 var title = product.GetString(titleKey); 359 var image = product.GetString(imagePathKey); 360 var imageAltText = product.GetString(imageAlttextKey); 361 var content = product.GetString(contentKey); 362 var grazingMethod = product.GetString(grazingMethodKey); 363 var numberOfGrazing = product.GetString(numberOfGrazingkey); 364 var soilFertility = product.GetString(soilFertilityKey); 365 var pastureLife = product.GetString(pastureLifeKey); 366 367 <div class="text-img-component-wrap"> 368 @if (!string.IsNullOrWhiteSpace(title)) 369 { 370 <h2>@title</h2> 371 } 372 373 @if (!string.IsNullOrWhiteSpace(image)) 374 { 375 <a class="mfp-image popup-link" href="@image.LargeImage()"> 376 377 <img src="@image.SmallImage()" class="img-responsive" alt="@imageAltText"> 378 379 <i class="glyphicon glyphicon-fullscreen"></i> 380 </a> 381 } 382 383 @if (!string.IsNullOrWhiteSpace(content)) 384 { 385 <div class="rte"> 386 @content 387 </div> 388 } 389 390 @if (!string.IsNullOrWhiteSpace(soilFertility)) 391 { 392 <ul class="list-unstyled"> 393 <li> 394 <span class="name">Soil Fertility</span> 395 <span class="value">@soilFertility</span> 396 </li> 397 </ul> 398 } 399 400 @if (!string.IsNullOrWhiteSpace(pastureLife)) 401 { 402 <ul class="list-unstyled"> 403 <li> 404 <span class="name">Pasture Life</span> 405 <span class="value">@pastureLife</span> 406 </li> 407 </ul> 408 } 409 410 @if (!string.IsNullOrWhiteSpace(grazingMethod)) 411 { 412 <ul class="list-unstyled"> 413 <li> 414 <span class="name">Grazing Method</span> 415 <span class="value">@grazingMethod</span> 416 </li> 417 </ul> 418 } 419 420 @if (!string.IsNullOrWhiteSpace(numberOfGrazing)) 421 { 422 <ul class="list-unstyled"> 423 <li> 424 <span class="name">Number of Grazings</span> 425 <span class="value">@numberOfGrazing</span> 426 </li> 427 </ul> 428 } 429 430 </div> 431 } 432 433 434 @helper DisplayInfoWrap(Dictionary<string, object> product) 435 { 436 437 var displayDryMatter = product.GetBoolean("DisplayDryMatter"); 438 var dryMatterPosition = product.GetString("DryMatterPosition"); 439 var displaySowingEstabilishment = product.GetBoolean("DisplaySowingEstabilishment"); 440 var sowingEstabilishmentPosition = product.GetString("SowingEstPosition"); 441 var displayGrazingManagement = product.GetBoolean("DisplayGrazingManagement"); 442 var grazingManagementPosition = product.GetString("GrazingManagementPosition"); 443 var displayMixSuitability = product.GetBoolean("DisplayMixSuitability"); 444 var mixSuitabilityPosition = product.GetString("MixSuitabilityPosition"); 445 var productDescription = product.GetString("Ecom:Product.LongDescription"); 446 447 448 <div class="info-wrap no-margin-sm-row wrap-md-offset-1-leftright"> 449 <div class="row"> 450 <div class="col-sm-6 col-xs-12"> 451 @if (!string.IsNullOrWhiteSpace(productDescription)) 452 { 453 <div class="product-desc"> 454 @productDescription 455 </div> 456 } 457 458 @if (displayDryMatter && dryMatterPosition == "Left") 459 { 460 @RenderComponent(product, "DryMatterProductionTitle", "DryMatterImage", "DryMatterAltText", "DryMatterContent"); 461 } 462 463 @if (displaySowingEstabilishment && sowingEstabilishmentPosition == "Left") 464 { 465 @RenderComponent(product, "SowingEstTitle", "SowingEstImage", "SowingEstAltText", "SowingEstContent", "SoilFertility", "PastureLife"); 466 } 467 468 @if (displayGrazingManagement && grazingManagementPosition == "Left") 469 { 470 @RenderComponent(product, "GrazingManagementTitle", "GrazingManagementImage", "GrazingManagementImageAltText", "GrazingManagementContent", "", "", "GrazingManagementMethod", "NumberOfGrazings"); 471 } 472 473 @if (displayMixSuitability && mixSuitabilityPosition == "Left") 474 { 475 @RenderComponent(product, "MixSuitabilityTitle", "MixSuitabilityImage", "MixSuitabilityImageAltText", "MixSuitabilityContent"); 476 } 477 478 </div> 479 480 <div class="col-sm-6 col-xs-12"> 481 @if (displayDryMatter && dryMatterPosition == "Right") 482 { 483 @RenderComponent(product, "DryMatterProductionTitle", "DryMatterImage", "DryMatterAltText", "DryMatterContent"); 484 } 485 486 @if (displaySowingEstabilishment && sowingEstabilishmentPosition == "Right") 487 { 488 @RenderComponent(product, "SowingEstTitle", "SowingEstImage", "SowingEstAltText", "SowingEstContent", "SoilFertility", "PastureLife"); 489 } 490 491 @if (displayGrazingManagement && grazingManagementPosition == "Right") 492 { 493 @RenderComponent(product, "GrazingManagementTitle", "GrazingManagementImage", "GrazingManagementImageAltText", "GrazingManagementContent", "", "", "GrazingManagementMethod", "NumberOfGrazings"); 494 } 495 496 @if (displayMixSuitability && mixSuitabilityPosition == "Right") 497 { 498 @RenderComponent(product, "MixSuitabilityTitle", "MixSuitabilityImage", "MixSuitabilityImageAltText", "MixSuitabilityContent"); 499 } 500 501 </div> 502 </div> 503 </div> 504 } 505 @DisplayInfoWrap(this.Values) 506 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 507 508 @{ 509 string productid = GetString("Ecom:Product.ID"); 510 var filterValue = "Product = \"p_" + productid + "\" or Product contains \"p_" + productid + ":\" or Product contains \"p_" + productid + ",\""; 511 } 512 513 @RenderItemList(new { 514 ItemType = "SeedsNZ_Testimonial_ItemList", 515 ListSourceType = "NamedList", 516 TargetNamedList = "Testimonials", 517 NamedListPageID = 301, 518 Filter = @filterValue, 519 ListTemplate = "ItemPublisher/List/Testimonials_List.cshtml", 520 ListPageSize = "100", 521 }) 522 523 @{ 524 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 525 526 527 @helper RenderCallToAction(string groupOrProductId) 528 { 529 530 if (!string.IsNullOrWhiteSpace(groupOrProductId)) 531 { 532 533 534 var productOrGroupFilterValue = "ProductOrGroup = \"" + groupOrProductId + "\" or ProductOrGroup contains \"" + groupOrProductId + ":\" or ProductOrGroup contains \"" + groupOrProductId + ",\" or ProductOrGroup ends with \"" + groupOrProductId + "\""; 535 536 @RenderItemList(new 537 { 538 ItemType = "SeedsNZ_CTA", 539 ListSourceType = "NamedList", 540 TargetNamedList = "CTA List", 541 NamedListPageID = GetPageIdByNavigationTag(PgwSeeds.SeedsNZ.NavigationTags.Home), 542 Filter = productOrGroupFilterValue, 543 ListTemplate = "ItemPublisher/List/CTA_List.cshtml", 544 ListPageSize = "3" 545 }) 546 } 547 548 549 } 550 551 552 <div class="related-tiles-wrap row row-same-height"> 553 @RenderCallToAction($"p_{GetString("Ecom:Product.ID")}") 554 </div> 555 } 556 </div> 557

Share this page