Ejemplo n.º 1
0
        /// <summary>
        /// 渲染部分视图(重写此方法以实现自定义输出 partial 元素)
        /// </summary>
        /// <param name="partialElement">partial 元素</param>
        /// <returns></returns>
        protected virtual string RenderPartial(IHtmlElement partialElement)
        {
            var path = partialElement.Attribute("path").Value();
            var name = partialElement.Attribute("name").Value();

            try
            {
                if (!PartialExecutors.IsNullOrEmpty() && name != null)
                {
                    return(RenderNamedPartial(partialElement, name));
                }


                else if (path != null)
                {
                    return(RenderVirtualPath(path));
                }
            }
            catch //若渲染时发生错误
            {
                if (JumonyWebConfiguration.Configuration.IgnorePartialRenderException || partialElement.Attribute("ignoreError") != null)
                {
                    return("<!--parital render failed-->");
                }
                else
                {
                    throw;
                }
            }

            throw new NotSupportedException("无法处理的partial标签:" + ContentExtensions.GenerateTagHtml(partialElement, false));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 渲染命名的部分视图
        /// </summary>
        /// <param name="partialElement">要渲染的 partial 元素</param>
        /// <param name="name">部分视图的名称</param>
        /// <returns>渲染结果</returns>
        protected virtual string RenderNamedPartial(IHtmlElement partialElement, string name)
        {
            PartialExecutor executor;

            if (PartialExecutors.TryGetValue(name, out executor))
            {
                return(executor.Execute(Handler, partialElement));
            }

            throw new HttpException(404, "找不到部分视图处理程序");
        }