{{EmailMarketing:Email.PreHeader.Clean}}

Swift

By Dynamicweb

Error executing template "Designs/Swift/Swift_Email/Paragraph/Swift_EmailImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_05d38e80e9bb45c5bfadf9a0140b2d95.Execute() in D:\dynamicweb.net\Solutions\Capo\sundqvist-new.cloud.dynamicweb-cms.com\Files\Templates\Designs\Swift\Swift_Email\Paragraph\Swift_EmailImage.cshtml:line 89
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.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 4 @functions { 5 private string GetTableReset() 6 { 7 return "border:0;margin:0;outline:0;padding:0;"; 8 } 9 } 10 11 @{ 12 string blockType = "image_block"; 13 14 var page = Dynamicweb.Content.Services.Pages.GetPage(Pageview.ID); 15 var settings = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(page?.Parent).Item; 16 var blockId = Model.ID; 17 var block = Model.Item; 18 19 var emailContentThemeId = settings.GetRawValueString("EmailContentTheme"); 20 var emailContentThemeParagraph = emailContentThemeId != null && emailContentThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(emailContentThemeId)) : null; 21 var emailContentTheme = emailContentThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(emailContentThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(emailContentThemeParagraph)?.Item : null; 22 23 var rowId = Pageview.CurrentParagraph.GridRowId; 24 var row = Dynamicweb.Content.Services.Grids.GetGridRowById(rowId); 25 var rowItem = Dynamicweb.Content.Services.Items.GetItem(row.ItemType, row.ItemId); 26 var rowThemeId = Dynamicweb.Core.Converter.ToString(rowItem["ColumnBackground"]); 27 var rowThemeParagraph = rowThemeId != null && rowThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(rowThemeId)) : null; 28 var rowTheme = rowThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(rowThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(rowThemeParagraph)?.Item : null; 29 30 var blockThemeId = block.GetRawValueString("Theme"); 31 var blockThemeParagraph = blockThemeId != null && blockThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(blockThemeId)) : null; 32 var blockTheme = blockThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(blockThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(blockThemeParagraph)?.Item : rowTheme is object ? rowTheme : emailContentTheme; 33 34 string padding = block.GetRawValueString("Padding", "0"); 35 var link = new Dynamicweb.Frontend.LinkViewModel(); 36 string linkType = block.GetRawValueString("LinkType", "page"); 37 38 if (linkType == "page" && block.GetLink("PageLink") != null) 39 { 40 if (!block.GetLink("PageLink").IsExternal) 41 { 42 link = new Dynamicweb.Frontend.LinkViewModel() 43 { 44 Url = Dynamicweb.Context.Current.Request.Url.Scheme + "://" + Dynamicweb.Context.Current.Request.Url.Host + "/Default.aspx?ID=" + block.GetLink("PageLink").PageId 45 }; 46 } 47 else 48 { 49 link = new Dynamicweb.Frontend.LinkViewModel() 50 { 51 Url = block.GetLink("PageLink").Url 52 }; 53 } 54 } 55 56 if (linkType == "product-group") 57 { 58 IList<ProductGroupViewModel> selectedGroups = block.GetValue<IList<ProductGroupViewModel>>("ProductGroupLink"); 59 IList<string> groupIds = new List<string> { }; 60 61 if (selectedGroups != null) 62 { 63 foreach (var fromGroup in selectedGroups) 64 { 65 groupIds.Add(fromGroup.Id); 66 } 67 } 68 69 link = new Dynamicweb.Frontend.LinkViewModel() 70 { 71 Url = Dynamicweb.Context.Current.Request.Url.Scheme + "://" + Dynamicweb.Context.Current.Request.Url.Host + "/Default.aspx?ID=" + GetPageIdByNavigationTag("Shop") + "&GroupID=" + string.Join(",", groupIds) 72 }; 73 } 74 75 if (linkType == "product") 76 { 77 ProductListViewModel products = block.GetValue<ProductListViewModel>("ProductLink"); 78 IList<string> productIds = new List<string> { }; 79 80 if (products != null) 81 { 82 foreach (var product in products.Products) 83 { 84 productIds.Add(product.Id); 85 } 86 } 87 88 string productParameter = productIds.Count == 1 ? "ProductID" : "MainProductId"; 89 string productLink = "/" + products.Products.FirstOrDefault().GetProductLink(GetPageIdByNavigationTag("Shop"), false); 90 productLink = productIds.Count != 1 ? "/Default.aspx?ID=" + GetPageIdByNavigationTag("Shop") + "&" + productParameter + "=" + string.Join(",", productIds).Trim() : productLink; 91 92 link = new Dynamicweb.Frontend.LinkViewModel() 93 { 94 Url = Dynamicweb.Context.Current.Request.Url.Scheme + "://" + Dynamicweb.Context.Current.Request.Url.Host + productLink 95 }; 96 } 97 } 98 99 <table id="@blockId" class="@blockType" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0pt;mso-table-rspace:0pt;mso-line-height-rule:exactly;@GetTableReset()color:inherit;width:100%;"> 100 <tbody> 101 <tr style="@GetTableReset()"> 102 <td style="mso-table-lspace:0pt;mso-table-rspace:0pt;mso-line-height-rule:exactly;text-align:left;@GetTableReset()vertical-align:top;padding:@(padding)px" width="100%"> 103 <div align="left"> 104 @if (link is object && !string.IsNullOrEmpty(link.Url)) 105 { 106 <a href="@link" target="_blank" style="display:block;"> 107 @{ @RenderImage(padding, blockTheme) } 108 </a> 109 } 110 else 111 { 112 @RenderImage(padding, blockTheme) 113 } 114 </div> 115 </td> 116 </tr> 117 </tbody> 118 </table> 119120 @helper RenderImage(string padding, Dynamicweb.Frontend.ItemViewModel theme) 121 { 122 var imageRatio = Model.Item.GetRawValueString("ImageAspectRatio", "4-3").ToLower(); 123 var parms = new Dictionary<string, object>(); 124 parms.Add("alt", Model.Item.GetString("ImageAltText")); 125 parms.Add("columns", Model.GridRowColumnCount); 126 parms.Add("padding", Dynamicweb.Core.Converter.ToInt32(padding) * 2); 127 parms.Add("imageRatio", imageRatio); 128129 @RenderPartial("Swift_Email/Components/Image.cshtml", Model.Item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms) 130 } 131
Email not displaying correctly? View in browser
Error executing template "Designs/Swift/Swift_Email/Paragraph/Swift_EmailMenu.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Page page)
at CompiledRazorTemplates.Dynamic.RazorEngine_5863bf36f2944ac89343a438ac71fc20.Execute() in D:\dynamicweb.net\Solutions\Capo\sundqvist-new.cloud.dynamicweb-cms.com\Files\Templates\Designs\Swift\Swift_Email\Paragraph\Swift_EmailMenu.cshtml:line 81
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.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 3 @functions { 4 private string GetFontStack() 5 { 6 return "font-family:initial,Arial,Helvetica Neue,Helvetica,sans-serif;"; 7 } 8 9 private string GetTableReset() 10 { 11 return "border:0;margin:0;outline:0;padding:0;"; 12 } 13 } 14 15 @{ 16 var blockType = "menu_block"; 17 18 var page = Dynamicweb.Content.Services.Pages.GetPage(Pageview.ID); 19 var settings = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(page?.Parent).Item; 20 var blockId = Model.ID; 21 var block = Model.Item; 22 23 var emailContentThemeId = settings.GetRawValueString("EmailContentTheme"); 24 var emailContentThemeParagraph = emailContentThemeId != null && emailContentThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(emailContentThemeId)) : null; 25 var emailContentTheme = emailContentThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(emailContentThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(emailContentThemeParagraph)?.Item : null; 26 27 var rowId = Pageview.CurrentParagraph.GridRowId; 28 var row = Dynamicweb.Content.Services.Grids.GetGridRowById(rowId); 29 var rowItem = Dynamicweb.Content.Services.Items.GetItem(row.ItemType, row.ItemId); 30 var rowThemeId = Dynamicweb.Core.Converter.ToString(rowItem["ColumnBackground"]); 31 var rowThemeParagraph = rowThemeId != null && rowThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(rowThemeId)) : null; 32 var rowTheme = rowThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(rowThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(rowThemeParagraph)?.Item : null; 33 34 var blockThemeId = block.GetRawValueString("Theme"); 35 var blockThemeParagraph = blockThemeId != null && blockThemeId != string.Empty ? Dynamicweb.Content.Services.Paragraphs.GetParagraph(Dynamicweb.Core.Converter.ToInt32(blockThemeId)) : null; 36 var blockTheme = blockThemeParagraph != null && Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(blockThemeParagraph).Item.GetString("CssClassName") != string.Empty ? Dynamicweb.Frontend.ContentViewModelFactory.CreateParagraphInfoViewModel(blockThemeParagraph)?.Item : rowTheme is object ? rowTheme : emailContentTheme; 37 38 string backgroundColor = blockTheme != null ? "background-color: " + blockTheme.GetString("BackgroundColor") + ";" : string.Empty; 39 string foregroundColor = blockTheme != null ? "color:" + blockTheme.GetString("ForegroundColor", "inherit") + ";" : string.Empty; 40 string borderColor = blockTheme != null ? blockTheme.GetString("BorderColor", "transparent") : string.Empty; 41 string borders = block.GetRawValueString("Borders", "none"); 42 string borderThicknes = block.GetRawValueString("BorderThicknes", "0") + "px"; 43 string borderClass = string.Empty; 44 45 switch (borders) 46 { 47 case "top": 48 borderClass = $"border-top:{borderThicknes} solid {borderColor};"; 49 break; 50 case "bottom": 51 borderClass = $"border-bottom:{borderThicknes} solid {borderColor};"; 52 break; 53 case "top-bottom": 54 borderClass = $"border-top:{borderThicknes} solid {borderColor}; border-bottom:{borderThicknes} solid {borderColor}; border-left:0;border-right:0;"; 55 break; 56 case "all": 57 borderClass = $"border:{borderThicknes} solid {borderColor};"; 58 break; 59 } 60 61 string padding = block.GetRawValueString("Padding", "0"); 62 var menuItems = block.GetItems("MenuItems"); 63 var align = block.GetRawValueString("Align", "center"); 64 var layout = block.GetRawValueString("Layout", "horizontal"); 65 var fontSize = block.GetRawValueString("FontSize", "16"); 66 } 67 68 <table id="@blockId" class="@blockType" align="@align" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0pt;mso-table-rspace:0pt;mso-line-height-rule:exactly;@GetTableReset()color:inherit;width:100%;@(backgroundColor)"> 69 <tbody> 70 <tr style="@GetTableReset()"> 71 <td style="mso-table-lspace:0pt;mso-table-rspace:0pt;font-weight:400;text-align:@align;vertical-align:top;@(backgroundColor)@(foregroundColor)@GetTableReset()padding:@(padding)px;@(borderClass)font-size:@(fontSize)px;" width="100%"> 72 @if (menuItems != null) 73 { 74 var last = menuItems.Last(); 75 foreach (var item in menuItems) 76 { 77 var link = item.GetLink("Link")?.Url ?? null; 78 var linkId = item.GetLink("Link").PageId; 79 var itemSpacing = block.GetRawValueString("ItemSpacing", "16"); 80 var spacing = !item.Equals(last) ? itemSpacing : "0"; 81 var menuItem = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Dynamicweb.Content.Services.Pages.GetPage(linkId)); 82 83 if (link != null) 84 { 85 <a href="@link" style="text-align:@align;@(layout == "vertical" ? $"display:block !important;width:100%;padding-bottom:{spacing}px;" : $"display:inline-block !important;padding-right:{spacing}px;")@(foregroundColor)text-decoration:none;@GetFontStack()" target="_blank"> 86 <strong style="@(foregroundColor)text-decoration:underline;font-weight:normal;@GetFontStack()"> 87 @menuItem.Name 88 </strong> 89 </a> 90 } 91 } 92 } 93 <!--[if mso]><br/><![endif]--> 94 </td> 95 </tr> 96 </tbody> 97 </table> 98
FacebookTwitterLinkedIn

Swift

By Dynamicweb

Bjoernholms Allé 30, 8260 Viby J, Denmark

+45 70 25 20 90 | info@dynamicweb.dk

You are receiving this email advertisement because you registered with SWIFT and agreed to receive emails from us regarding new bikes, features, events and special offers.

Unsubscribe

Copyright © Dynamicweb 2022

Du bestemmer over dine data

Vi og vores partnere bruger teknologier, inklusiv cookies, til at indsamle information om dig til forskellige formål, inkluderet:

  1. Funktionalitet
  2. Statistik
  3. Marketing

Ved at klikke 'Acceptér Alle' giver su samtykke til disse formål. Du kan også vælge at bestemme hvilke formål du vil give samtykke til med valgmulighederne her under, og klikke 'Acceptér valgte'.

Du kan læse mere om vores brug af cookies og andre teknologier, samt vores indsamling og processering af personlig data, ved at klikke her:

Læs mere om CookiesVores fortrolighedspolitik