怎样用ASP.NET,C#实现生成静态页面?
各位朋友们好:
   我有一个小小的问题,若我用ASP.NET,C#做了个网站后,想每个页面都用
静态的页面显示,不要用后缀aspx的文件来显示,怎样用ASP.NET,C#来写呢?
谢谢!!!

解决方案 »

  1.   

    生成HTML页面例子很多,你搜索一下
      

  2.   

    比如新闻网站,你在录入新闻的时候,根据你录入的内容,就直接帮你生成相应的html页面了,首页链接直接指向那个html地址。至于是怎么生成的,也很简单,先制作一个txt的html格式的文件,里面其他部分都是写死的,只有新闻内容和图片部分是空的,然后用textwriter类填充html代码就行了,没有什么难度,但是需要多实践下。怎么把这个排版搞好。
      

  3.   

    思路 1. 利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据。 2. 使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件。 优点 1. 可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页面头,广告等内容。 2. 静态html文件利用MS Windows2000的Index Server可以建立全文搜索引擎,利用asp.net可以以DataTable的方式得到搜索结果。而Win2000的Index服务无法查找xml文件的内容。如果包括了数据库搜索与Index索引双重查找,那么此搜索功能将非常强大。 3. 节省服务器的负荷,请求一个静态的html文件比一个aspx文件服务器资源节省许多。 缺点 思路二: 如果用硬编码的方式,工作量非常大,需要非常多的html代码。调试困难。而且使用硬编码生成的html样式无法修改,如果网站更换样式,那么必须得重新编码,给后期带来巨大的工作量。 因此这里采用的是第一种思路 示列代码 1.定义(template.htm)html模板页面 <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body > <table $htmlformat[0] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" style="border:1px solid #000000"> <tr> <td width="100%" valign="middle" align="left"> <span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span> </td> </tr> </table> </body> </html> 2.asp.net代码: //---------------------读html模板页面到stringbuilder对象里---- string[] format=new string[4];//定义和htmlyem标记数目一致的数组 StringBuilder htmltext=new StringBuilder(); try { using (StreamReader sr = new StreamReader("存放模板页面的路径和页面名")) { String line; while ((line = sr.ReadLine()) != null) { htmltext.Append(line); } sr.Close(); } } catch { Response.Write("<Script>alert('读取文件错误')</Script>"); } //---------------------给标记数组赋值------------ format[0]="background=\"bg.jpg\"";//背景图片 format[1]= "#990099";//字体颜色 format[2]="150px";//字体大小 format[3]= "<marquee>生成的模板html页面</marquee>";//文字说明 //----------替换htm里的标记为你想加的内容 for(int i=0;i<4;i++) { htmltext.Replace("$htmlformat["+i+"]",format[i]); } //----------生成htm文件------------------―― try { using(StreamWriter sw=new StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312"))) { sw.WriteLine(htmltext); sw.Flush(); sw.Close(); } } catch { Response.Write ("The file could not be wirte:"); } 小结 用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。
      

  4.   

    StringBuilder objBuilder = new StringBuilder();
                objBuilder.Append( "<html>\n<head>" );
                
                // Add the Page Title
                objBuilder.AppendFormat( "\n<title>{0}</title>", objPageInfo.Title );
               
                // Add the Page Style
                objBuilder.AppendFormat( "\n<link href=\"{0}\" type=\"text/css\" rel=\"stylesheet\"/>", CommunityGlobals.ResolveBase( "Communities" + "/" + objSectionInfo.Style ));            // Add the Meta Tags
                objBuilder.AppendFormat( "\n<META NAME=\"KEYWORDS\" CONTENT=\"{0}\"/>", Server.HtmlEncode(objPageInfo.MetaKeys) );
                objBuilder.AppendFormat( "\n<META NAME=\"DESCRIPTION\" CONTENT=\"{0}\"/>", Server.HtmlEncode(objPageInfo.MetaDesc) );
                objBuilder.AppendFormat( "\n<META NAME=\"PAGETYPE\" CONTENT=\"{0}\"/>", objPageInfo.Content );
                objBuilder.Append( "\n<META ASPNETSTARTERKIT=\"CommunitySK\" Version=\"CSVS 1.0\"/>" );            // Add the Page Head to the Page
                objBuilder.Append( "\n</head>\n<body marginheight=\"0\" marginwidth=\"0\" leftmargin=\"0\" rightmargin=\"0\" class=\"pageBody\">\n" );
                Controls.Add( new LiteralControl( objBuilder.ToString() ) ); 
            
                // Create a Form Control
                HtmlForm objForm = new HtmlForm();
                objForm.ID = "PageForm";
                
                // Load the Page Skin
                objPageSkin = LoadControl( CommunityGlobals.AppPath + "/Communities/" + objSectionInfo.Skin + "/Skins/PageSkins/Default.ascx" );
                
                 // Add the Page Content Page Part
                objPagePart = (PlaceHolder)objPageSkin.FindControl( "content" );
                if (objPagePart != null) {
                    Control objPageContent = (Control)Activator.CreateInstance( Type.GetType( objPageInfo.Content, true ) );
                    //Control objPageContent = LoadControl( CommunityGlobals.AppPath + "/Modules" + objPageInfo.PageContent );
                    objPagePart.Controls.Add( objPageContent );            
                }
                // Find Search
                TextBox txtSearch = (TextBox)objPageSkin.FindControl("txtSearch");
                if (txtSearch != null)
                    txtSearch.TextChanged += new EventHandler(RedirectToSearchPage);
                LinkButton lnkSearch = (LinkButton)objPageSkin.FindControl("lnkSearch");
                if (lnkSearch != null)
                    lnkSearch.CausesValidation = false;            
                             
                // Add the Page Footer
                objPagePart = (PlaceHolder)objPageSkin.FindControl( "Footer" );
                if (objPagePart != null)
                    objPagePart.Controls.Add( new LiteralControl( objSectionInfo.Footer ) );            // Add the Page Skin to the Form
                objForm.Controls.Add( objPageSkin );
               
                // Add the Form Control
                Controls.Add( objForm );
                
                // Close the Page
                Controls.Add( new LiteralControl( "\n</body>\n</html>" ) );
            }
      

  5.   

    可以阿,你写好后用html当后缀,就当是个记事本
      

  6.   

    ASP.Net生成静态HTML页 
    环境:Microsoft .NET Framework SDK v1.1 
    OS:Windows Server 2003 中文版
    ASP.Net生成静态HTML页
    在Asp中实现的生成静态页用到的FileSystemObject对象!
    在.Net中涉及此类操作的是System.IO 
    以下是程序代码 注:此代码非原创!参考别人代码
    //生成HTML页
      public static bool WriteFile(string strText,string strContent,string strAuthor) 
      {
       string path = HttpContext.Current.Server.MapPath("/news/");
       Encoding code = Encoding.GetEncoding("gb2312");
       // 读取模板文件
       string temp = HttpContext.Current.Server.MapPath("/news/text.html");
       StreamReader sr=null;
       StreamWriter sw=null;
       string str="";  
       try
       {
        sr = new StreamReader(temp, code);
        str = sr.ReadToEnd(); // 读取文件
       }
       catch(Exception exp)
       {
        HttpContext.Current.Response.Write(exp.Message);
        HttpContext.Current.Response.End();
        sr.Close();
       }
      
       
       string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
       // 替换内容
       // 这时,模板文件已经读入到名称为str的变量中了
       str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle
       str = str.Replace("biaoti",strText);
       str = str.Replace("content",strContent);
       str = str.Replace("author",strAuthor);
       // 写文件
       try
       {
        sw = new StreamWriter(path + htmlfilename , false, code);
        sw.Write(str);
        sw.Flush();
       }
       catch(Exception ex)
       {
        HttpContext.Current.Response.Write(ex.Message);
        HttpContext.Current.Response.End();
       }
       finally
       {
        sw.Close();
       }
       return true;此函数放在Conn.CS基类中了
    在添加新闻的代码中引用 注:工程名为Hover
     
        if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
        {
         Response.Write("添加成功");
        }
        else
        {
         Response.Write("生成HTML出错!");
        }
    -------------------------------------------------------------------------
    模板页Text.html代码
    -------------------------------------------------------------------------
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>ShowArticle</title>
      
     <body>  biaoti
     <br>
     content<br>
     author
     </body>
    </HTML>
     biaoti
     <br>
     content<br>
     author
     </body>
    </HTML>
     biaoti
     <br>
     content<br>
     author
     </body>
    </HTML>