smhy8187

 

cms 静态文件

一个ASP.Net生成静态HTML的示例

       目前大多的CMS实现生成HTML静态都是通过替换模板页上的相关项然后通过IO写入文件,这一个示例也是采用这种原理来实现的.

代码如下:
/// <summary>
/// 通过路径存储文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static void CreateFileByPath(string filePath,string fileCode)
{
//如果文件已存在,则删除此文件
if(File.Exists(filePath))
{File.Delete(filePath);
}

FileStream fs = new FileStream(filePath, FileMode.CreateNew);
StreamWriter w = new StreamWriter(fs,Encoding.GetEncoding("gb2312"));
w.Write( fileCode);
w.Close();
fs.Close();
}



//生成产品展示的静态页

public static void CreateProductFile(string productID,string fileName)
{
DataBase GetData=new DataBase();
string basePath=System.Configuration.ConfigurationSettings.AppSettings["BasePath"].ToString();//配置的根路径
string productBasePath=basePath+"\\HtmlFile\\Product";//商业机会的基本路径

if(!Directory.Exists(productBasePath))
{
Directory.CreateDirectory(productBasePath);
}

//读取本地商业机会模板的文件
string productFilePath=basePath + "\\FileTemplet\\Product.htm";
string productCode=GetFileCode(productFilePath);

string strWhere=" where ProductID=" + productID;
SqlDataReader myRead=GetData.GetDataReaderBySprocs("GetProduct",strWhere);
if(myRead.Read())
{
//生成类别目录
//一级
productBasePath=productBasePath+"\\" + myRead["SortID"].ToString();
if(!Directory.Exists(productBasePath))
{
Directory.CreateDirectory(productBasePath);
}
//二级类别
productBasePath=productBasePath+"\\" + myRead["SubSortID"].ToString();
if(!Directory.Exists(productBasePath))
{
Directory.CreateDirectory(productBasePath);
}
//三级类别
productBasePath=productBasePath+"\\" + myRead["EndSortID"].ToString();
if(!Directory.Exists(productBasePath))
{
Directory.CreateDirectory(productBasePath);
}

//开始进行页面内的代码替换
productCode=productCode.Replace("TheProductID",productID);//替换信息ID
productCode=productCode.Replace("TheLinkman",myRead["linkman"].ToString());//替换联系人
productCode=productCode.Replace("TheProductName",myRead["ProductName"].ToString());//替换标题
productCode=productCode.Replace("TheTitle",myRead["ProductName"].ToString());//替换网页标题
productCode=productCode.Replace("ThePublishTime",myRead["PublishTime"].ToString());//替换发布时间
productCode=productCode.Replace("TheProductIntro",myRead["ProductIntro"].ToString());//替换产品介绍
productCode=productCode.Replace("TheProductModel",myRead["ProductModel"].ToString());//替换产品型号
productCode=productCode.Replace("TheProductArea",myRead["ProductArea"].ToString());//替换原产地
productCode=productCode.Replace("TheProductSpec",myRead["ProductSpec"].ToString());//替换产品规格
productCode=productCode.Replace("ThePrice",myRead["Price"].ToString());//替换参考价格

 

//替换上面的类别链接
productCode=productCode.Replace("TheSortName",GetData.GetFieldvalue("Select SortName From Sort Where SortID=" + myRead["SortID"].ToString()));//替换大类
productCode=productCode.Replace("TheSubSortName",GetData.GetFieldvalue("Select SortName From Sort Where SortID=" + myRead["SubSortID"].ToString()));//替换二类
productCode=productCode.Replace("TheEndSortName",GetData.GetFieldvalue("Select SortName From Sort Where SortID=" + myRead["EndSortID"].ToString()));//替换三类
productCode=productCode.Replace("TheSortID",myRead["SortID"].ToString());//替换大类ID
productCode=productCode.Replace("TheSubSortID",myRead["SubSortID"].ToString());//替换小类ID
productCode=productCode.Replace("TheEndSortID",myRead["EndSortID"].ToString());//替换子类ID

 

//替换图片
productCode=productCode.Replace("TheBreviaryPicURL",myRead["BreviaryPicURL"].ToString());//替换缩略图地址
productCode=productCode.Replace("ThePicURL",myRead["PicURL"].ToString());//替换图片地址


//取得公司信息
//获取公司信息

//查询条件(输入参数)
string userID=myRead["UserID"].ToString();
strWhere=" where UserID=" + userID;
SqlDataReader myReadCompany=GetData.GetDataReaderBySprocs("GetCompany",strWhere);
if(myReadCompany.Read())
{
productCode=productCode.Replace("TheCompanyName",myReadCompany["CompanyName"].ToString());//替换公司名称
productCode=productCode.Replace("TheMainProduct",myReadCompany["MainProduct"].ToString());//替换主营产品
productCode=productCode.Replace("TheCompanyType",myReadCompany["CompanyType"].ToString());//替换企业类型
productCode=productCode.Replace("TheCompanyMode",myReadCompany["CompanyMode"].ToString());//替换企业经营模式
productCode=productCode.Replace("TheEmployeeNumber",myReadCompany["EmployeeNumber"].ToString());//替换员工人数


productCode=productCode.Replace("ThePhone",myReadCompany["Phone"].ToString());//替换手机
productCode=productCode.Replace("TheAddress",myReadCompany["Address"].ToString());//替换地址
productCode=productCode.Replace("TheFax",myReadCompany["Fax"].ToString());//替换传真
productCode=productCode.Replace("TheURL",myReadCompany["URL"].ToString());//替换网址
}
myReadCompany.Close();


//获取该公司的其它的产品信息
//查询条件(输入参数)
strWhere=" where UserID=" + userID;
DataTable myTable=GetData.GetDataTableBySprocs("GetProduct",strWhere);
StringBuilder tablevalue=new StringBuilder();
tablevalue.Append("<table width='97%'  border='0' cellspacing='2' cellpadding='3'>");

for(int i=0;i<myTable.Rows.Count;i++)
{
if(i%2==0)
{
tablevalue.Append("<tr>");
}

tablevalue.Append("<td width='11%' align='center'><img align='absmiddle' src='/Upload/Product/Thumbnail/" + myTable.Rows[i]["BreviaryPicURL"].ToString() + "'></td><td width='39%'>" + "<a href='/HtmlFile/" + myTable.Rows[i]["FilePath"].ToString() + "' target='_blank'><b>" + myTable.Rows[i]["ProductName"].ToString() + "</b></a>" + "</td>");

if((i+1)%2==0)
{
tablevalue.Append("</tr>");
}
}
tablevalue.Append("</table>");

productCode=productCode.Replace("TheCompanyProduct",tablevalue.ToString());//替换其它产品的信息


//写入文件

fileName = basePath + "\\HtmlFile\\" + fileName;
CreateFileByPath(fileName,productCode);
}
myRead.Close();
}

posted on 2006-12-15 13:35  new2008  阅读(341)  评论(0编辑  收藏  举报

导航