Error executing template "Designs/Swift/Swift_Email/Paragraph/Swift_EmailHeading.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_62a9f27b5b2041fea60066cc899064e5.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.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, 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 RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, 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>
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 string blockType = "heading_block";
17
18 var page = Dynamicweb.Content.Services.Pages.GetPage(Model.PageID);
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 = Dynamicweb.Content.Services.Paragraphs.GetParagraph(blockId).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 string align = block.GetRawValueString("Align", "left");
63
64 string title = block.GetString("Title", string.Empty);
65 string fontStyle = block.GetRawValueString("FontStyle", "header");
66 string fontSize = "font-size:" + block.GetRawValueString("FontSize", "28") + "px;";
67 string lineHeight = "line-height:" + (Dynamicweb.Core.Converter.ToInt32(block.GetRawValueString("FontSize", "28")) * Dynamicweb.Core.Converter.ToDouble(block.GetRawValueString("LineHeight", "1.5"))).ToString() + "px;";
68 var textRaise = ((Dynamicweb.Core.Converter.ToInt32(block.GetRawValueString("FontSize", "28")) * Dynamicweb.Core.Converter.ToDouble(block.GetRawValueString("LineHeight", "1.5"))) - Dynamicweb.Core.Converter.ToInt32(block.GetRawValueString("FontSize", "28"))) / 2;
69 textRaise = textRaise == 0 ? 11 : textRaise;
70 string startTag = $"<p class=\"{fontStyle}\" style=\"mso-line-height-rule:exactly;mso-text-raise:{textRaise}px;vertical-align:middle;margin:0;{GetFontStack()}{fontSize}{lineHeight}\">";
71 string endTag = $"</p>";
72 }
73
74 <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%;@(backgroundColor)">
75 <tbody>
76 <tr style="@GetTableReset()">
77 <td style="mso-table-lspace:0pt;mso-table-rspace:0pt;mso-line-height-rule:exactly;@GetFontStack()text-align:@align;@(backgroundColor)@(foregroundColor)@GetTableReset()padding:@(padding)px;@(borderClass)" width="100%">
78 @startTag
79 @title
80 @endTag
81 <!--[if mso]><br/><![endif]-->
82 </td>
83 </tr>
84 </tbody>
85 </table>
86
87
|