/// <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)); }
/// <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, "找不到部分视图处理程序"); }