ASP.NET 中服务器控件和html控件的使用

  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程序员不是只会托控件这么简单,也不是什么控件都不用这么极端,而是会根据需要,能够选择出一个合适的实现方法实现想要的结果。

时间: 2024-10-27 02:44:02

ASP.NET 中服务器控件和html控件的使用的相关文章

1 asp.net 中如何把用户控件应用于母版页

1 创建用户控件 2 在母版页中注册用户控件 3 使用 <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Store.master.cs" Inherits="SportsStore.Pages.Store" %> <%@ Register TagPrefix="SS" TagName="CatLinks&qu

ASP.NET中,HiddenField隐藏控件的用法

HiddenField控件就是隐藏输入框的服务器控件,他能让你保存那些不必显示在页面上的且对安全性需求不高的数据.也许这个时候应该有这么一个疑问,为什么有了ViewState.Session和Cookie等状态保存机制,还需要用起HiddenField呢? 增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全方面.因为不管是ViewState.Cookie还是Session,都有其失效的时候,比如用户因某种需求设置ViewState为false,或环境条件限制使用Cookie

Webform 服务器控件与客户端控件以及验证控件

Webform——服务器控件与客户端控件 Webform,即BS,浏览器应用. 关于服务器和客户端,在Webform 中, 服务器就相当于后台(也就是编辑C#代码的地方), 客户端相当于前台(也就是Html页面). 用法: ①如果想在服务器控件里调用客户端控件的js或Jquery函数,必须在服务器的控件中加上 onClientClick属性: <asp:Button ID="Button1" runat="server" OnClientClick="

Web服务器控件和HTML控件区别

 这两天在学习ASP.NET,遇到了Web服务器控件和HTML控件.刚开始看见这两个控件的时候,感觉很相似. 所以就想到了如下问题:这两个控件有什么区别?后来又看到了HTML服务器控件(加上runat="server"属性), 这下子Web服务器控件和HTML服务器控件更加相似了.更加傻傻地分不清楚,所以在此进行总结一下. 一,Web服务器控件和HTML控件的区别 二,Web服务器控件和HTML服务器控件区别 HTML服务器控件就是HTML控件加上runat="serve

Asp.Net服务端的基本控件

今天开始把最基础的Asp.Net服务端基本控件学习巩固了一下 1.Asp.Net服务端控件是Asp.Net对HTML的封装,在C#代码中就可以用txt1.Text="指定值"这种方式修改 input的值,Asp.Net会将服务端控件渲染成HTML代码输出给浏览器,服务端控件是Asp.Net非常容易上手,也非常吸引初学者,但也是被人诟病的东西.因为它会传输很多无法的东西,如viewstate. 服务端控件在内网或互联网系统的后台部分等访问频率不高的地方还是很适合的. 服务端控件只能用po

ASP.NET使用文件上传控件上传图片

ASPX代码 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

ASP.NET列表生成组件DbNetList控件下载及介绍

DbNetList是一个综合功能的列表选择组件,作为动态HTML(DHTML)实现.运用DbNetList,你可以快速为自己的web页面添加数据库驱动的列表.下拉式列表(drop-down).树型和复选框列表.DbNetList兼容最流行的各种数据库服务器,包括:SQL Server.Oracle和Informix. 具体功能: 生成列表.多列列表.下拉式列表(drop-down).树型列表.复选框列表... 提供ASP 和 ASP.NET的本地版本. 基于浏览器.无论何处均可设计和运行.无需客

在asp.net中用客户端上传控件上传文件( 需要注意的)

在asp.net中使用<inpu nme=“file” type=“file”>客户端控件上传文件, 代码大致如下: for(int i=0; i< Request.Files.Count; i++) //这里就是获取不到file的个数 { if(Request.Files[i].ContentLength > 0) { Response.Write (Request.Files [i].FileName ); } } 在我的页面中,Request.Files.Count怎么弄都是

ASP.NET MVC加载用户控件后并获取其内控件值或赋值

有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不想在控件制器内进行赋值,而是想在视图中使用jQuery来获取用户控件内的控件值或是为它们赋值.那需要怎样来做呢? 下面Insus.NET花上少少时间,做个简单的例子,演示与分享实现的方法. 实现之前,先修改一下AscxUtility.cs这个类中的 public static HtmlString Rende