예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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)));
        }
예제 #3
0
        /// <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));
        }
예제 #4
0
        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)));
        }
예제 #5
0
        /// <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);
                }
            }
        }