zoukankan      html  css  js  c++  java
  • Asp.net 生成静态页面(简单用法)

      第一次发表,有什么错误,请大家谅解噢!

          如果不明白的话,建议自己拷一次。 就会的了。。

        开发步骤:

          1、路径映射类(UrlMapping),主要对路径进行拆分、拼接。(关键的一步)

          2、过滤流类(FilterStream),主要负责生成静态页面。

          3、静态页面类(HtmlPage),主要是调用UrlMapping和FilterStream类,

              哪个页面想静态化,就继承这个类。

          4、HtmlHandler类,路径后缀为Html的,都由它来处理,与HtmlPage类相似。

          5、HtmlPanel类(控件),页面带上这个控件,超链接会静态化。(详情请下载源码包)

          部分代码:

          


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.IO;

    namespace Eshop.Web.UI
    {
        
    /// <summary>
        
    /// 路径映射
        
    /// </summary>
        public static class UrlMapping
        {
            
    //Aspx 转换到 Html
            public static string AspxToHtml(string url)
            {
                
    //判断路径是否为空
                if (string.IsNullOrEmpty(url))
                {
                    
    throw new ArgumentNullException("路径不能为空");
                }

                
    //分割路径
                string[] temp = url.Split('?');

                
    if (temp.Length != 1 && temp.Length != 2)
                {
                    
    throw new ArgumentException(String.Format("路径 {0} 及其参数错误", url));
                }

                
    //获取路径后缀
                string ext = Path.GetExtension(temp[0]);    
                
    if (!(ext.Equals(".aspx", StringComparison.OrdinalIgnoreCase)))
                {
                    
    throw new ArgumentException(String.Format("路径 {0} 类型必须为ASPX", url));
                }

                
    //截取.aspx中前面的内容
                int offset = temp[0].LastIndexOf('.');
                
    string resource = temp[0].Substring(0, offset);

                
    //路径不带参数时
                if (temp.Length == 1 || string.IsNullOrEmpty(temp[1]))
                {
                    
    return string.Format("{0}.html", resource);    //拼接
                }

                
    //路径带参数时
                return string.Format("{0}___{1}.html", resource, temp[1]); //拼接
            }
            
            
    //Html 转换到 Aspx
            public static string HtmlToAspx(string url)
            {
                
    //判断路径是否为空
                if (string.IsNullOrEmpty(url))
                {
                    
    throw new ArgumentNullException("路径不能为空");
                }

                
    string ext = Path.GetExtension(url);
                
    if (!(ext.Equals(".html", StringComparison.OrdinalIgnoreCase)))
                {
                    
    throw new ArgumentException(String.Format("路径 {0} 类型必须为HTML", url));
                }

                
    string[] temp = url.Split(new String[] { "___""." }, StringSplitOptions.RemoveEmptyEntries);
                
    if (temp.Length == 2)
                {
                    
    return string.Format("{0}.aspx", temp[0]);
                }

                
    if (temp.Length == 3)
                {
                    
    return String.Format("{0}.aspx?{1}", temp[0], temp[1]);
                }

                
    throw new ArgumentException(String.Format("资源 {0} 及其参数错误", url));
            }
        }
    }

     

     

    过滤流类

     

     

    静态页面类

     

     

    HtmlHandler

     

    页面

        源码包:   /Files/tonycall/AspxToHtmlDemo.zip

  • 相关阅读:
    全网最详细的一个超级好用的命令行工具【Cmder】的安装之后的一些配置(图文详解)
    全网最详细的一个超级好用的命令行工具【Cmder】的下载与安装(图文详解)
    全网最详细的一个超级好用的命令行工具【Cmder】的优点有哪些?
    全网最详细的一个超级好用的命令行工具【Cmder】是什么?
    全网最详细的IDEA、Eclipse和MyEclipse之间于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)
    【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)
    全网最详细的Eclipse和MyEclipse里对于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)
    全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)
    [转]BEC Vantage
    [转]VB.NET DataTable Select Function
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1884941.html
Copyright © 2011-2022 走看看