/// <summary> /// 创建 HtmlContentResult 实例 /// </summary> /// <param name="provider">负责加载的提供程序</param> /// <param name="content">加载的内容</param> /// <param name="virtualPath">内容的虚拟路径</param> /// <param name="cacheKey">缓存内容所使用的缓存键</param> public HtmlContentResult(IHtmlContentProvider provider, string content, string virtualPath, string cacheKey) { if (provider == null) { throw new ArgumentNullException("provider"); } if (content == null) { throw new ArgumentNullException("content"); } if (virtualPath == null) { throw new ArgumentNullException("virtualPath"); } if (!VirtualPathUtility.IsAppRelative(virtualPath)) { throw HtmlProviders.VirtualPathFormatError("virtualPath"); } Provider = provider; Content = content; VirtualPath = virtualPath; CacheKey = cacheKey; }
/// <summary> /// 检测是否能加载指定虚拟路径的文档内容 /// </summary> /// <param name="virtualPath">虚拟路径</param> /// <returns>是否能加载指定虚拟路径的文档内容</returns> public bool CanLoadContent(string virtualPath) { if (!VirtualPathUtility.IsAppRelative(virtualPath)) { throw HtmlProviders.VirtualPathFormatError("virtualPath"); } return(SupportedExtensions.Contains(VirtualPathUtility.GetExtension(virtualPath))); }
/// <summary> /// 加载 HTML 文档内容 /// </summary> /// <param name="virtualPath">虚拟路径</param> /// <returns></returns> public HtmlContentResult LoadContent(string virtualPath) { if (!VirtualPathUtility.IsAppRelative(virtualPath)) { throw HtmlProviders.VirtualPathFormatError("virtualPath"); } var provider = GetProvider(virtualPath); return(provider.LoadContent(virtualPath)); }
private static Uri CreateDocumentUri(string virtualPath) { if (virtualPath == null) { throw new ArgumentNullException("virtualPath"); } if (!VirtualPathUtility.IsAppRelative(virtualPath)) { throw HtmlProviders.VirtualPathFormatError("virtualPath"); } return(new Uri(baseUri, VirtualPathUtility.ToAbsolute(virtualPath))); }
/// <summary> /// 获取指定虚拟路径的文档内容加载程序 /// </summary> /// <param name="virtualPath">虚拟路径</param> /// <returns></returns> public IHtmlContentProvider GetProvider(string virtualPath) { if (!VirtualPathUtility.IsAppRelative(virtualPath)) { throw HtmlProviders.VirtualPathFormatError("virtualPath"); } var extensions = VirtualPathUtility.GetExtension(virtualPath); IHtmlContentProvider provider; lock ( _sync ) { if (data.TryGetValue(extensions, out provider)) { return(provider); } else { return(null); } } }