Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GlassHtmlFacade" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="writer">The writer.</param>
        public GlassHtmlFacade(ISitecoreContext context, HtmlTextWriter writer, ITemplateBase templateBase)

        {
            _writer      = writer;
            _glassHtml   = new GlassHtml(context);
            TemplateBase = templateBase;
        }
Пример #2
0
        /// <summary>
        /// 编译指定的模板类,并使用指定的模型和上下文执行模板。
        /// </summary>
        /// <param name="context">解析执行使用的上下文。</param>
        public void Parse(TemplateContext context)
        {
            // 获取对应的模板类型。
            Type templateType = GetTemplateType(context.InputReader, context.SourceFileName, context.Model == null ? null : context.Model.GetType());

            object template;

            try {
                // 创建模板类型实例。
                template = TypeHelper.CreateInstance(templateType);
            } catch (Exception e) {
                throw new RazorRuntimeException(e);
            }

            context.Razor = this;

            // 运行模板。
            ITemplateBase t = template as ITemplateBase;

            if (t != null)
            {
                try {
                    t.Execute(context);
                } catch (Exception e) {
                    throw new RazorRuntimeException(e);
                }
            }
            else
            {
                MethodInfo m = templateType.GetMethod("Execute", new Type[1] {
                    typeof(TemplateContext)
                });
                if (m != null)
                {
                    try {
                        m.Invoke(template, new object[1] {
                            context
                        });
                    } catch (Exception e) {
                        throw new RazorRuntimeException(e);
                    }
                }
                else
                {
                    throw new RazorRuntimeException("Method Not Found: void Execute(TemplateContext context);");
                }
            }
        }
Пример #3
0
 public RazorHelper(ITemplateBase templateBase)
 {
     _template = templateBase;
 }
Пример #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GlassHtmlFacade" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="writer">The writer.</param>
        public GlassHtmlFacade(ISitecoreContext context, HtmlTextWriter writer, ITemplateBase templateBase) : this(context)

        {
            _writer      = writer;
            TemplateBase = templateBase;
        }