实现.net cms系统 第一篇《抛砖引玉-代码对比》
本文代码皆是C#
见识过许多CMS系统,他们功能强大至极,让人佩服。但是,有得必有失,功能强大未必好,毕竟不可全用。
再者:毕竟是他人开发,束缚了自身发展。
我心痒痒,欲编写一个基于.NET平台的CMS.
废话不说了。
先谈一下:绑定数据。
绑定数据方法有多种。
①使用服务器控件
说明:拖控件是高手对.net鄙视的最大原因。其弊端多多,会产生很多垃圾代码,对网页布局有很大影响,无法做出精美的页面。
所以,这里就不加说明了。
②直接循环输出html
例:
<div>
<ul>
<%
string strWhere = "";//条件
int currentPage = 1;//当前页
if (Request.QueryString["PageNum"] != null)
{
if (v.IsInteger(Request.QueryString["PageNum"].ToString()) == "")//判断是否为数字
{
currentPage = int.Parse(Request.QueryString["PageNum"].ToString());
}
}
int showCounts = 15;//当页显示行数www.zzzyk.com
string strOrder = " ORDER BY [CreateDateTime] DESC ";//排序规则
List<News> list_News = newsDao.GetAllNews(currentPage, showCounts, strWhere, strOrder);//获取News数据
Pager p = newsDao.GetAllNewsPager(currentPage, showCounts, strWhere);//获取分页数据
%>
<%foreach (News n in list_News) %>
<%{ %>
<li><span><%=n.CreateDateTime %></span><a href="Detail.aspx?NID=<%=n.NID %>"><%=n.NewsTitle %></a></li>
<%} %>
</ul>
</div>
<div>
<span class="pager"> <%=Method.PagerInfo("current", p)%></span><!--页码-->
</div>
这上面是一个简单例子,可能大家的写法有所不同,但是原理都差不多。
通过再次封装后,得到如下结果
<div>
<ul>
<%TblName = "News"; Filed = "NewsID,Title,Time"; Num = 15; Sort = "[Time] DESC"; Page = true; %>
<%=Aspx(@"
<li><span>{2}</span><a href='Detail.aspx?NID={0}'>{1}</a></li>
") %>
</ul>
</div>
<div>
<span class="pager"><%=AspxP("current") %></span><!--页码-->
</div>
看看是不是简化了很多。而且,可以通过自定义的“Aspx”函数涵盖所有的列表,字段。而分页则通过“AspxP”来实现。
也更加灵活。TblName 代表表名,Filed代表字段,Num代表所当页显示条数,Sort则代表排序方法,Page代表是否分页。
还有一些参数,在下就不一一列举了。
是不是很像那些CMS。
中间是纯HTML,看起来是不是很舒服。
能够这么写,而不报错,可以参考我的上一篇日志,里面有介绍。
好了,就写到这里,下一篇,我将介绍,其原理。
在下知识有限,如果有哪里介绍的不清楚,还请谅解,有任何疑问,都可以留言。
请大家勇于拍砖!!!
摘自 19岸
补充:Web开发 , ASP.Net ,