public void AddCompiledTemplateFile(string templateName, ViewModelTemplate file)
        {
            string content = file.GetSource();
            Func <object, string> template = HandlebarsDotNet.Handlebars.Compile(content);

            Templates.AddMissing(templateName, template);
        }
 /// <summary>
 /// This implementation returns the view model file id as the template name.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 protected override string GetTemplateName(IRequest request)
 {
     if (FileExists(request, out string absolutePath))
     {
         FileInfo          fileInfo      = new FileInfo(absolutePath);
         ViewModelTemplate viewModelFile = new ViewModelTemplate
         {
             FileSystemPath = fileInfo.FullName
         };
         viewModelFile.ParseActionProviderName(AppConf);
         return(viewModelFile.ViewModelId);
     }
     return(base.GetTemplateName(request));
 }
        protected override PageModel CreatePageModel(IRequest request)
        {
            if (FileExists(request, out string absolutePath))
            {
                FileInfo          fileInfo      = new FileInfo(absolutePath);
                ViewModelTemplate viewModelFile = new ViewModelTemplate {
                    FileSystemPath = fileInfo.FullName
                };
                string    relativeFilePath = $"{fileInfo.FullName.TruncateFront(AppRoot.Root.Length)}";
                ViewModel viewModel        = viewModelFile.Load(AppConf);

                PageModel pageModel = new PageModel(request, AppContentResponder)
                {
                    ViewModel = viewModel
                };
                viewModel.Url.RelativeFilePath = relativeFilePath;
                AddCompiledTemplateFile(GetTemplateName(request), viewModelFile);

                return(pageModel);
            }

            return(base.CreatePageModel(request));
        }