Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_2aaf10919264493bb055a4921d846b7a.ExecuteAsync()
at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
@using Dynamicweb.Frontend.Navigation
@using Dynamicweb.Ecommerce.ProductCatalog
@using Dynamicweb.Environment
@using Dynamicweb.Frontend
@{
ProductListViewModel productList = null;
if (Dynamicweb.Context.Current.Items.Contains("ProductList"))
{
productList = (ProductListViewModel)Dynamicweb.Context.Current.Items["ProductList"];
}
else if (Pageview.Page.Item["DummyProductGroup"] != null && Pageview.IsVisualEditorMode)
{
var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page);
ProductListViewModel groupList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel();
if (groupList?.Products is object)
{
productList = groupList;
}
}
}
@if (productList is object) {
string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : string.Empty;
if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase))
{
groupImage = $"/Files{groupImage}";
}
string groupName = productList?.Group?.Name != null ? productList.Group.Name : string.Empty;
string ratio = Model.Item.GetRawValueString("ImageAspectRatio", string.Empty);
ratio = ratio != "0" ? ratio : string.Empty;
string ratioCssClass = ratio != string.Empty && ratio != "fill" ? " ratio" : string.Empty;
string ratioVariable = ratio != string.Empty ? "style=\"--bs-aspect-ratio: " + ratio + "\"" : string.Empty;
string fillClass = ratio == "fill" ? " h-100" : "";
var parms = new Dictionary<string, object>();
parms.Add("loading", "lazy");
parms.Add("columns", Model.GridRowColumnCount);
if (ratio == "fill") {
parms.Add("cssClass", "w-100 h-100");
}
else
{
parms.Add("cssClass", "mw-100 mh-100");
}
parms.Add("style", string.Empty);
parms.Add("alt", groupName);
if (!string.IsNullOrEmpty(groupImage)) {
<div class="item_@Model.Item.SystemName.ToLower()">
<figure class="m-0@(ratioCssClass)@(fillClass)" @ratioVariable>
@RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms)
</figure>
</div>
} else if (Pageview.IsVisualEditorMode) {
<div class="alert alert-dark m-0" role="alert">
<span>@Translate("Product list group image: The image will be shown here, if any")</span>
</div>
}
} else if (Pageview.IsVisualEditorMode)
{
<div class="alert alert-dark m-0" role="alert">
<span>@Translate("Product list group image: The image will be shown here, if any")</span>
</div>
}