现在的位置: 首页 > 综合 > 正文

静态页面评论处理以及列表处理

2012年11月08日 ⁄ 综合 ⁄ 共 3498字 ⁄ 字号 评论关闭
三、评论的更新。评论的更新过程比较复杂,因为添加评论是一个交互的过程,静态页面自身根本不可能完成这一操作。解决方法是把添加评论的工作交给另一个页面(如:remark.aspx)来完成。具体过程为:在静态页面上用form给remark.aspx传递评论的内容,remark.aspx接收评论内容,添加评论,更新文章的静态页面,最后再重定向到静态页面。这样就完成了评论的添加。

 

      form处的代码:

       

             评论内容:

             

 

      remark.aspx中相关操作的代码:

              protected override void OnLoad(EventArgs e)

              {

                   base.OnLoad (e);

 

                   int nArticleID = int.MinValue;//文章id

                   int nClassID = int.MinValue;//分类id

 

                   try

                   {

                       //获取传入参数

                       nArticleID = int.Parse(this.Request.QueryString["articleid"]);

                       nClassID = int.Parse(this.Request.QueryString["classid"]);

                   }

                   catch

                   {

                   }

 

                   //检查有效性

                   if(nArticleID < 1 || nClassID < 1)

                   {

                       this.Response.Redirect("/error.html",true);

                   }

             

                   string sRemarkBody = this.Request.Params["remarkbody"];

 

                   //格式:/show.aspx?id=456&cid=123

                   string sFrom = string.Concat("/show.aspx?id=",nArticleID,"&cid=nClassID);

 

                   //格式:/news/123/456.html

                   string sTo = string.Concat("/news/",nClassID,"/",nArticleID,".html");

 

                   if(sRemarkBody != null && sRemarkBody.Length > 0)

                   {

                       //添加评论

                       InsertRemark(nArticleID);

 

                       //生成静态页面

                       MakeStatic(sFrom,this.MapPath(sTo));

                   }

 

                   //转向静态页面

                   this.Response.Redirect(sTo,true);

              }

 

      这样处理的静态页面在普通浏览时与其它的静态页面完全一样,只是在发评论时对待更新评论的程序,整体的招待速度还是很快的。

第二种情况,新闻分类列表页面。此类页面在管理新闻的时候变化会非常大,即使采用后台管理也非常的不便。这就需要一些程序来帮助管理员管理这些页面。程序思路在前面已经提过,在此给出能够实际应用的程序代码。

 

              protected override void OnLoad(EventArgs e)

              {

                   base.OnLoad (e);

 

                   int nClassId = int.MinValue;//分类id

                   int nPage = int.MinValue;//页码

                  

                   try

                   {

                       //获取传入参数

                       nClassID = int.Parse(this.Request.QueryString("classid"));

                       nPage = int.Parse(this.Request.QueryString("page");

                   }

                   catch

                   {

                   }

 

                   //检查有效性

                   if(nClassID < 1)

                   {

                       this.Response.Redirect("/error.html",true);

                   }

                   else if(nPage < 1)

                   {

                       nPage = 1;

                   }

 

                   //格式:/list.aspx?cid=123&page=456

                   string sFrom = string.Concat("/list.aspx?cid=",nClassID,"&page=",nPage);

 

                   //格式:/news/123/default456.html

                  string sTo = string.Concat("/news/",nClassID,"/default",((nPage==1) ? ("") : (nPage)),".html");

                   string sPath = this.MapPath(sTo);

 

                   if(!File.Exists(sPath))

                   {

                       //文件不存在时,创建静态页面

                       MakeStatic(sFrom,sTo);

                   }

                   else

                   {

                       TimeSpan ts = DateTime.Now - File.GetLastWriteTime(sPath);

 

                       if(ts.TotalDays > 1)

                       {

                            //文件已存在,但是存在时间过长,需更新

                            MakeStatic(sFrom,sTo);

                       }

                   }

 

                   //转向静态页面

                   this.Response.Redirect(sTo,true);

              }

 

抱歉!评论已关闭.