public void ShouldGetGeneratedCodeFromTemplate() { string template1 = @"Hello @user, it's @Datetime.Now"; string resultCode1 = RazorEngineHelper.GenerateSourceCode(template1); Assert.IsNotNullOrEmpty(resultCode1); }
public void ShouldUseJsonAsModelForTemplate() { dynamic modelSource = new ExpandoObject(); modelSource.Speaker = "Rui"; dynamic track1 = new ExpandoObject(); track1.Title = "MongoDB en C#"; track1.Date = new DateTime(2011, 2, 8, 17, 30, 0); dynamic track2 = new ExpandoObject(); track2.Title = "Asp.Net MVC3"; track2.Date = new DateTime(2011, 2, 9, 17, 30, 0); modelSource.Sessions = new[] { track1, track2 }; string json = JsonConvert.SerializeObject(modelSource, Formatting.Indented); dynamic actualModel = JsonConvert.DeserializeObject <ExpandoObject>(json); string templateSource = @"Session presented by @Model.Speaker, Total Sessions : @Model.Sessions.Count"; string actual = RazorEngineHelper.ProcessGeneratedCode(templateSource, actualModel); string expected = "Session presented by Rui, Total Sessions : 2"; Assert.IsNotNullOrEmpty(actual); Assert.AreEqual(expected, actual); }
protected string GetHtml(string templateName, object model) { var template = GetTemplate(templateName); var body = RazorEngineHelper.Render(template, model); return(body); }
public override ControllerResult Execute() { if (!string.IsNullOrEmpty(ArgumentModel.TemplateFile)) { if (File.Exists(ArgumentModel.TemplateFile)) { ArgumentModel.TemplateContent = File.ReadAllText(ArgumentModel.TemplateFile); } } if (!string.IsNullOrEmpty(ArgumentModel.ModelFile)) { if (File.Exists(ArgumentModel.ModelFile)) { ArgumentModel.ModelContent = File.ReadAllText(ArgumentModel.ModelFile); } } string result = string.Empty; if (string.IsNullOrEmpty(ArgumentModel.ModelContent)) { result = ArgumentModel.TemplateContent; } else { switch (ArgumentModel.Type) { case ModelType.Json: result = RazorEngineHelper.ProcessTemplateWithJsonModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent); break; case ModelType.Dictionary: case ModelType.Properties: result = RazorEngineHelper.ProcessTemplateWithPropertiesModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent); break; case ModelType.Csv: case ModelType.Xml: result = RazorEngineHelper.ProcessTemplateWithXmlModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent); break; case ModelType.Binary: case ModelType.Scalar: default: result = RazorEngineHelper.ProcessTemplateWithJsonModel(ArgumentModel.TemplateContent, ArgumentModel.ModelContent); break; } } if (!string.IsNullOrEmpty(ArgumentModel.ResultFile)) { return(new FileResult(result, ArgumentModel.ResultFile)); } else { return(new StringResult(result)); } }
/// <summary> /// Load embedded script /// </summary> /// <param name="formId"></param> /// <returns></returns> public string LoadEmbeddedScript(int formId) { var form = GetById(formId); if (form != null) { var formRenderModel = new FormWidget(form); var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>(); var cacheName = SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.EmbeddedTemplate); return(RazorEngineHelper.CompileAndRun(formBuilderSetting.EmbeddedTemplate, formRenderModel, null, cacheName)); } return(HtmlUtilities.BuildScript(ScriptAction.Alert, T("Form_Message_InvalidFormId"))); }
/// <summary> /// Reformat form content /// </summary> /// <param name="name"></param> /// <param name="content"></param> /// <returns></returns> public string ParseForm(string name, string content) { if (string.IsNullOrEmpty(content)) { return(content); } content = content.ParseProperties(typeof(FormElementsModel), true); var cacheName = name.GetTemplateCacheName(content); var formElementsModel = new FormElementsModel(); content = RazorEngineHelper.CompileAndRun(content, formElementsModel, null, cacheName); // Remove hidden html content = content.Replace(EzCMSContants.AddElementClass, string.Empty); return(content.RemoveElementsHasClass(EzCMSContants.RemoveElementClass)); }
/// <summary> /// Render widget /// </summary> /// <param name="parameters"></param> /// <returns></returns> public override string Render(string[] parameters) { ParseParams(parameters); var form = _formService.GetById(FormId); if (form == null) { return(_localizedResourceService.T("Widget_Form_Message_InvalidFormId")); } var formRenderModel = new FormWidget(form); var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>(); var cacheName = SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.EmbeddedTemplate); return(RazorEngineHelper.CompileAndRun(formBuilderSetting.EmbeddedTemplate, formRenderModel, null, cacheName)); }
public static HtmlString SecureControl(this HtmlHelper htmlHelper, SecureControlType controlType, object model = null) { if (_controls == null) { InitializeControls(htmlHelper); } var secureControl = _controls[controlType]; var userRoles = Roles.GetRolesForUser(HttpContext.Current.User.Identity.Name); var content = userRoles.Intersect(secureControl.AllowedRoles).Any() ? RazorEngineHelper.Render(@"SecuredControls\" + secureControl.SecuredPartial, model) : string.IsNullOrEmpty(secureControl.DefaultPartial) ? string.Empty : RazorEngineHelper.Render(@"DefaultControls\" + secureControl.DefaultPartial, model); return(new HtmlString(content)); }
/// <summary> /// Submit form /// </summary> /// <param name="formId"></param> /// <param name="contact"></param> /// <param name="communication"></param> /// <param name="collection"></param> /// <returns></returns> public ResponseModel SubmitForm(string formId, Contact contact, ContactCommunication communication, NameValueCollection collection) { try { var id = PasswordUtilities.ComplexDecrypt(formId).ToInt(); var form = GetById(id); if (form != null) { var formData = collection.AllKeys.SelectMany(collection.GetValues, (k, v) => new ContactInformation { Key = k, Value = v }).ToList(); //Save contact and communication contact = _contactService.SaveForm(contact, communication, formData); #region Form Data var formEmailModel = collection.AllKeys.SelectMany(collection.GetValues, (k, v) => new ContactInformation { Key = k.CamelFriendly(), Value = v }).ToList(); var formBuilderSetting = _siteSettingService.LoadSetting <FormBuilderSetting>(); var cacheName = SettingNames.FormBuilderSetting.GetTemplateCacheName(formBuilderSetting.SubmitFormBodyTemplate); var formDataBody = RazorEngineHelper.CompileAndRun(formBuilderSetting.SubmitFormBodyTemplate, formEmailModel, null, cacheName); #endregion if (form.SendSubmitFormEmail && !string.IsNullOrEmpty(form.EmailTo)) { var email = new EmailLog { From = form.FromEmail, FromName = form.FromName, To = form.EmailTo, ToName = form.EmailTo, Subject = formBuilderSetting.SubmitFormSubject, Body = formDataBody }; _emailLogService.CreateEmail(email, true); } if (form.SendNotificationEmail && !string.IsNullOrEmpty(form.NotificationEmailTo)) { var notificationBodyStringBuilder = new StringBuilder(); notificationBodyStringBuilder.AppendLine(form.NotificationBody); notificationBodyStringBuilder.AppendLine(formDataBody); var email = new EmailLog { From = form.FromEmail, FromName = form.FromName, To = form.NotificationEmailTo, ToName = form.NotificationEmailTo, Subject = form.NotificationSubject, Body = notificationBodyStringBuilder.ToString() }; _emailLogService.CreateEmail(email, true); } if (form.SendAutoResponse) { // Get email from form data var emailAddress = formData.FirstOrDefault( f => f.Key.Contains("Email", StringComparison.CurrentCultureIgnoreCase)); if (emailAddress != null && !string.IsNullOrEmpty(emailAddress.Value)) { var toName = contact.FullName; var email = new EmailLog { From = form.FromEmail, FromName = form.FromName, To = emailAddress.Value, ToName = string.IsNullOrWhiteSpace(toName) ? emailAddress.Value : toName, Subject = form.AutoResponseSubject, Body = form.AutoResponseBody }; _emailLogService.CreateEmail(email, true); } } return(new ResponseModel { Success = true, Message = form.ThankyouMessage }); } } catch (Exception) { // Form parameters invalid } return(new ResponseModel { Success = false, Message = T("Form_Message_InvalidFormId") }); }