Asp.net开发中,控件无疑给开发人员带来了方便,大大提高了开发速度,如果纯粹的用托控件方式来开发网站,我想应该没有其他什么开发工具能够拼的过visual studio(以下简称vs)了。一个企业站用1~2天就可以完成,如果要求简单的,估计半天就搞定,这样开发速度,估计有些人还不信。
然而,使用vs开发就是托控件吗?回答是否定的。这个要根据实际情况来选择到底是不是该用服务器控件。下面,天智海网络就和大家浅谈下什么时候适合用服务器控件,而什么情况则应该少用或者不用服务器控件。
首先,用不用服务器控件,先要看你制作的网站是什么性质的。如果是企业站、资讯站这些类型的,要考虑SEO的优化等,这样的网站前台建议少用或者不用服务器控件。为什么?现在做这些门户站、企业站、资讯站的小公司遍地都是,加上工作室,数不胜数,而他们为了能够多做一些单子多赚钱,多数都是要自己员工用最快速度赶工出来即可,只要功能达到,不管你怎么做。这样的网站其实是非常不适合做SEO的,因为服务器控件用多了,asp.net在将服务器控件转为html标签时会多了非常多的input type="hidden"的标签,也就是html隐藏文本框控件,这些内容第一影响网站的性能,第二搜索引擎倾向于读取简单的html格式的文本,第三重要的内容在html页面的顶端出现有利于搜索引擎的抓取,而大量的服务器控件会把html的顶部内容占用等等。
因此,对于基本是靠搜索引擎给你带来浏览的网站,前台就要少用或者不用服务器控件。有的朋友就会问了,不用控件数据显示多麻烦。确实麻烦了一些,原来托个数据源控件,一个DataGridView之类的控件就可以解决的,现在变成需要自己来实现了。但是,这些控件最终生成的html代码还是div+table的显示,因此自己使用table来实现也未必就麻烦。同样的,我们可以在html代码中调用后台的方法,那么,我们就可以直接在html界面做好模板,需要显示数据的地方直接调用后台的方法也可以达到数据的显示,这样的工作量不会比控件复杂多少,举个例子:
<table>
<thead>
<tr>
<td>标题</td>
<td>时间</td>
</tr>
</thead>
<tbody>
<%ShowList(); %>
</tbody>
</table>
以上除了<%ShowList(); %>这句是调用后台ShowList()方法,其他都是纯html代码。这样,我们只需要在ShowList中将需要显示的数据用Response.Write方法输出即可:
protected void ShowList()
{
for(int i = 0; i < 10; i++)
Response.Write("<tr><td>第 " + i.ToString() + " 个标题</td><td>" + DateTime.Now.ToString() + "</td></tr>");
}
最终得到的html代码是:
<table>
< thead>
< tr>
< td>标题</td>
< td>时间</td>
< /tr>
< /thead>
< tbody>
< tr><td>第0个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第1个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第2个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第3个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第4个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第5个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第6个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第7个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第8个标题</td><td>2012-6-24 10:57:23</td></tr>
< tr><td>第9个标题</td><td>2012-6-24 10:57:23</td></tr>
< /tbody>
< /table>
使用这样的方法来显示数据,html标签中不需要改动的代码都可以一直保留,只需要把动态显示内容的位置替换为方法即可,这样的做法用习惯了你会发现其实比使用控件操作更简单。
到这里,可能有些朋友又会问,那不用服务器控件,像注册、登录、留言这样的页面,需要用户提交信息的,那写起来不很麻烦。像是注册、留言、登录这样的页面,基本上都不关心搜索引擎到底收不收录,而且只是为了收集用户信息所用,所以像是这样的页面,直接使用服务器控件开发速度又快,后台操作也方便,当然是首选方法了。
其次,如果网站是后台管理、oa系统、公司内部使用这样性质的,因为类似这样的系统只提供和系统有关系的人使用,不关心SEO,搜索引擎收录这些问题,所以,这样的网站就不需要太在意用不用服务器控件了,页面的功能怎么实现方便就如何实现即可。
再次,一些网页动态性较高,像需要根据某个值来决定显示多少个控件,如用户输入了5,则需要在窗体上显示5个textbox控件,这样的要求就应该使用后台直接生成html标签的方法来实现,因为这样如果选用服务器控件,在开发过程可能反而会有更多的问题需要去解决。
还有,大型网站,如门户网、数据量大的论坛、社区网站等,应该避免使用服务器控件,因为这样的网站访问量大,已经对服务器产生较大的压力,如果还继续使用服务器控件,更给服务器加大开销,这样会影响网站性能,不仅要避免使用服务器控件,还要做好网站缓存机制,页面静态化等,减少服务端的压力。
最后,用不用服务器控件其实是么有什么硬性规定,只不过需要结合网站的性质来选择一个更合适的方法。一个优秀的asp.net程序员不是只会托控件这么简单,也不是什么控件都不用这么极端,而是会根据需要,能够选择出一个合适的实现方法实现想要的结果。