public RazorModuleTemplatePageMaker(string moduleTemplate, IPageData pageData)
            : base(pageData)
        {
            TkDebug.AssertArgumentNullOrEmpty(moduleTemplate, "moduleTemplate", null);

            fModuleTemplate = PlugInFactoryManager.CreateInstance <IModuleTemplate>(
                ModuleTemplatePlugInFactory.REG_NAME, moduleTemplate);
            if (fModuleTemplate.PageTemplates != null)
            {
                foreach (var item in fModuleTemplate.PageTemplates)
                {
                    RazorPageTemplatePageMaker pageMaker = new RazorPageTemplatePageMaker(item.PageTemplate, pageData)
                    {
                        ModelCreator = item.ModelCreator
                    };
                    Add(item.Function, pageMaker);
                    pageMaker.SetPageData += pageMaker_SetPageData;
                }
            }
            var pageMakers = fModuleTemplate.CreatePageMakers(pageData);

            if (pageMakers != null)
            {
                foreach (var item in pageMakers)
                {
                    if (item.PageMaker != null)
                    {
                        Add(item.Function, item.PageMaker);
                    }
                }
            }

            SetCallInfo(pageData);
        }
        protected override void PrepareWritePage(IPageMaker pageMaker, ISource source,
                                                 IPageData pageData, OutputData outputData)
        {
            base.PrepareWritePage(pageMaker, source, pageData, outputData);

            fModuleTemplate.SetPageMaker(source, pageData, outputData, pageMaker);
            RazorPageTemplatePageMaker templateMaker = pageMaker as RazorPageTemplatePageMaker;

            if (templateMaker != null)
            {
                var overrideItem = FindOverrideItem(pageData);
                templateMaker.SetConfig(overrideItem);
                return;
            }

            PostPageMaker postMaker = pageMaker as PostPageMaker;

            if (postMaker != null)
            {
                if (fOverridePostPageMakers == null)
                {
                    return;
                }
                var overrideItem = (from item in fOverridePostPageMakers
                                    where MetaDataUtil.Equals(item.Style, pageData.Style)
                                    select item).FirstOrDefault();
                if (overrideItem != null)
                {
                    postMaker.SetProperties(overrideItem.DataType,
                                            overrideItem.DestUrl, overrideItem.CustomUrl);
                    postMaker.UseRetUrlFirst = overrideItem.UseRetUrlFirst;
                    if (overrideItem.AlertMessage != null)
                    {
                        postMaker.AlertMessage = overrideItem.AlertMessage.ToString();
                    }
                }
            }
        }