public override string ParseTemplate(MessageTemplatePart template, ParseTemplateContext context) {
			var layout = template.Layout;
			var templateContent = new StringBuilder(template.Text);
			var viewBag = context.ViewBag;

			if (layout != null) {
				templateContent = new StringBuilder(layout.Text.Replace(LayoutBeacon, templateContent.ToString()));
			}

			if (viewBag != null) {
				var variables = viewBag as IEnumerable<KeyValuePair<string, string>>;
				if (variables != null) {
					templateContent = variables.Aggregate(templateContent, (current, variable) => current.Replace(string.Format("[{0}]", variable.Key), variable.Value));
				}
			}

			return templateContent.ToString();
		}
        public override string ParseTemplate(MessageTemplatePart template, ParseTemplateContext context) {
            var layout = template.Layout;
            var templateContent = template.Text;
            var viewBag = context.ViewBag;

            if (layout != null) {
                _razorMachine.RegisterLayout("~/shared/_layout.cshtml", layout.Text);
                templateContent = "@{ Layout = \"_layout\"; }\r\n" + templateContent;
            }

            try {
                // Convert viewBag to string/object pairs if required
                if (viewBag != null) {
                    if (viewBag is IEnumerable<KeyValuePair<string, string>>)
                        viewBag = ((IEnumerable<KeyValuePair<string, string>>) viewBag).Select(x => new KeyValuePair<string, object>(x.Key, x.Value)).ToDictionary(x => x.Key, x => x.Value);
                }
                var tmpl = _razorMachine.ExecuteContent(templateContent, context.Model, viewBag);
                return tmpl.Result;
            }
            catch (TemplateCompileException ex) {
                Logger.Log(LogLevel.Error, ex, "Failed to parse the {0} Razor template with layout {1}", template.Title, layout != null ? layout.Title : "[none]");
                return BuildErrorContent(ex, template, layout);
            }   
        }
Ejemplo n.º 3
0
        public string ParseTemplate(MessageTemplatePart template, ParseTemplateContext context)
        {
            var parser = SelectParser(template);

            return(parser.ParseTemplate(template, context));
        }
		public abstract string ParseTemplate(MessageTemplatePart template, ParseTemplateContext context);
 public string ParseTemplate(MessageTemplatePart template, ParseTemplateContext context) {
     var parser = SelectParser(template);
     return parser.ParseTemplate(template, context);
 }