利用wojilu框架仿一个网站的全过程(Step by Step利用wojilu框架开发网站系列二 附源码)

 

被仿的网站和仿照后的网站

  被仿的网站-易读 

  仿照后的网站-我读 

  仿这个网站的目的:为了实践一下新学习的轻量级asp.net web开发框架[我记录] ,该网站比较简单,适合入门。  

 

实现章节

   章节部分,原网站实现成3列,自己要实现一个和它一模一样的效果。 

  

  原网站章节部分网页的部分源码如下:

  

View Code
<TABLE WIDTH=900px ALIGN=CENTER cellpadding="0" cellspacing="0" border="0"><TR><TD width=33% valign=top><a href='read_213198_12131.html' >第1节</A><BR><a href='read_213201_12131.html' >第4节</A><BR><a href='read_213204_12131.html' >第7节</A><BR></td><TD width=33% valign=top><a href='read_213199_12131.html' >第2节</A><BR><a href='read_213202_12131.html' >第5节</A><BR></td><TD width=33% valign=top><a href='read_213200_12131.html' >第3节</A><BR><a href='read_213203_12131.html' >第6节</A><BR></td></TR></TABLE>


    提取出中间循环的部分,因为要分成3列,于是自己做了3个循环节,模板视图部分的代码如下:

 

View Code
<TABLE WIDTH=900px ALIGN=CENTER cellpadding="0" cellspacing="0" border="0">
<TR>

<TD width=33% valign=top>
<!-- BEGIN list1 -->
<a href="#{a.ShowLink}">#{a.Title}</A><BR>
<!-- END list1 -->
</td>
<TD width=33% valign=top>
<!-- BEGIN list2 -->
<a href="#{a.ShowLink}">#{a.Title}</A><BR>
<!-- END list2 -->
</td>
<TD width=33% valign=top>
<!-- BEGIN list3 -->
<a href="#{a.ShowLink}">#{a.Title}</A><BR>
<!-- END list3 -->
</td>
</TR></TABLE>

  控制器中的代码如下:

  

    public void Show(int id)
{

List<ArticleSection> recent = ArticleSection.find("articleId=" + id + " order by SectionNo asc").list();

IBlock block1 = getBlock("list1");
IBlock block2 = getBlock("list2");
IBlock block3 = getBlock("list3");

int nIndex = 0;
ArticleSection[] asArray = recent.ToArray();
foreach (ArticleSection a in recent)
{
nIndex++;
if (nIndex % 3 == 1)
{
block1.Set("a.Title", "" + nIndex.ToString() + "");
block1.Set("a.ShowLink", to(new ArticleSectionController().Show, a.Id));
block1.Next();
}
else if(nIndex % 3 == 2)
{
block2.Set("a.Title", "" + nIndex.ToString() + "");
block2.Set("a.ShowLink", to(new ArticleSectionController().Show, a.Id));
block2.Next();
}
else if(nIndex % 3 == 0)
{
block3.Set("a.Title", "" + nIndex.ToString() + "");
block3.Set("a.ShowLink", to(new ArticleSectionController().Show, a.Id));
block3.Next();
}
}

}

 

实现上一页,下一页及返回目录

 

   内容显示部分,原网站下方有一个上一页,下一页的导航,自己要实现一个和它一模一样的效果。 

 

 

  视图部分很简单,设置上一页,下一页,返回目录链接变量,代码如下:

  

View Code
<TABLE WIDTH=90% ALIGN=CENTER>
<TR><TD>
<TABLE WIDTH=100%>
<TR>
<TD >
<B>#{a.Title}</B><br>
</TD>
<TD WIDTH=250 ALIGN=RIGHT valign=top>
<span id="mmad1">&nbsp;</span>
</TD>
</TR></TABLE>

</TD></TR>
<TR><TD CLASS=ART>

#{a.SectionContent}

</TD></TR></TABLE>
<TABLE WIDTH=950 ALIGN=CENTER cellpadding="0" cellspacing="0" border="0">
<TR><TD WIDTH=32% ALIGN=RIGHT>
<a href="#{a.LastLink}">上一节</a></TD><TD WIDTH=20% ALIGN=CENTER>
<a href="#{a.AblumLink}">目录</a></TD><TD WIDTH=48% ALIGN=LEFT>
<a href="#{a.NextLink}">下一节</a></TD></TR></TABLE>

 

  控制器部分也很简单,首先找到该篇文章id,同时生成上一篇文章和下一篇文章的链接,填充到视图的对应变量中,代码如下:

 

     public void Show(int id)
{

ArticleSection c = ArticleSection.findById(id);
set("a.Title", c.article.Title);
set("a.SectionContent", c.SectionContent);

List<ArticleSection> recent = ArticleSection.find("articleId=" + c.article.Id + " order by SectionNo asc").list();
ArticleSection[] asArray = recent.ToArray();
int nIndex = 0;

foreach (ArticleSection a in recent)
{

if (a.Id == id)
{
set("a.LastLink", to(new ArticleSectionController().Show, asArray[nIndex > 0 ? nIndex - 1 : nIndex].Id));
set("a.AblumLink", to(new ArticleController().Show, a.article.Id));
set("a.NextLink", to(new ArticleSectionController().Show, asArray[nIndex == asArray.Length - 1 ? nIndex : nIndex + 1].Id));
break;
}

nIndex++;

}
}


  其余的代码就不一一列举了,是一些后台管理的部分,文章和章节的增删查改,大家参考附件中的源码吧。

 

MVC方式开发网站的心得,与Winform开发方式类比

  开发一个网站,首先当然要先分析业务需求;业务需求有了,需要考虑如何划分页面的职责,某一页面上要显示哪些内容,显示哪些链接到其他页面的链接;而当每个链接到其他页面的链接被点击的时候,即进入到对应的controller的某个action之中。与Winform开发做类比的话,这里的链接相当于按钮,点击链接进入到相应的controller的某个action中相当于点击按钮触发事件处理函数,而action返回的新视图相当于winform中弹出一个新的对话框,上面又包含新的按钮。

 

  源码下载 

posted @ 2011-11-08 11:52  xchsp  阅读(1030)  评论(3编辑  收藏  举报
友情链接 豆约翰博客备份专家 IT行业观察