站点图标 江湖人士

asp.net mvc 生成静态页面的方法

asp.net mvc 生成静态页面的方法

一直以来都在做一些电子商务网站,也很少写博客,今天星期天,在公司值班,没有事就写一下我所做的项目是怎样生存成静态页面的。。我接手的这些项目中,有很多模块都是前人所写好的。就好比现在这个生成静态页面的方法,以前不知道它是怎样处理的,因为它是VB写的,我也没有学过VB,它的源码也看不明白。

今天没有事情就打开它的源码来看,居然看到一个熟悉的类:WebClient ,虽然是VB的代码,但看了一下,不明白的上google找了一下,明白了它是怎样生成静态页面的了。C#做的话其实也很简单,同样是用WebClient类来实现。

简单的描述一下需求,后台要添加新闻,然后把添加的新闻生成静态页面,例如:test.html这种文件形式。做起来是这样实现的,先做一个动态的新闻页面,即新闻的模板页,然后URL传入新闻ID参数,传到哪里呢?当然是传到新闻动态模板页了,模板页根据不同ID生成不同的新闻;然后调写WebClient的静态方法DownloadString,这个方法重载了两个,一个是string类型的,一个是Uri类型的。我把模板页的URL地址传进去,再给上参数,例如:http://localhost/Assistant/NewsModel.aspx?newsId=78,函数返回的是string,也就是给客户端看到的HTML代码了;这时就可以通过.net来写文件了哈。。思路说到这里了,我想大家实现起来也不是很难。。。。

另外再贴一小段代码吧:

代码
    /// <summary>
/// 生成静态页
/// </summary>
public static void CreateStaticPage(string filepath, string url)
{
WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
string file = wc.DownloadString(“http://localhost/Assistant/NewsModel.aspx?newsId=78”);
using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(“new/test.html”), FileMode.Create))
{
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
sw.Write(file);
fs.Dispose();
fs.Close();
}
}
退出移动版