/// <summary> /// Validate the model /// </summary> /// <param name="context">the validation context</param> /// <returns></returns> public IEnumerable <ValidationResult> Validate(ValidationContext context) { var widgetService = HostContainer.GetInstance <IWidgetService>(); var localizedResourceService = HostContainer.GetInstance <IEzCMSLocalizedResourceService>(); if (_pageTemplateService.IsPageTemplateNameExisted(Id, Name)) { yield return(new ValidationResult(localizedResourceService.T("PageTemplate_Message_ExistingName"), new[] { "Name" })); } //Check if content is valid if (widgetService.IsPageTemplateValid(Content)) { yield return(new ValidationResult(localizedResourceService.T("PageTemplate_Message_InvalidContentFormat"), new[] { "Content" })); } var razorValidMessage = string.Empty; try { var cacheName = Name.GetTemplateCacheName(Content); // Template is updated here EzRazorEngineHelper.TryCompileAndAddTemplate(Content, cacheName, typeof(PageRenderModel), ResolveType.Layout); } catch (TemplateParsingException exception) { razorValidMessage = exception.Message; } catch (TemplateCompilationException exception) { razorValidMessage = string.Join("\n", exception.CompilerErrors.Select(e => e.ErrorText)); } catch (Exception exception) { razorValidMessage = exception.Message; } if (!string.IsNullOrEmpty(razorValidMessage)) { yield return(new ValidationResult(string.Format(localizedResourceService.T("PageTemplate_Message_TemplateCompileFailure"), razorValidMessage), new[] { "Content" })); } }