Web controls使创建forms 和HTML controls.的工作将会变得简单易行。例如在ASP中典型的选择框/ select box里,你不得不创建一个循环以便让控制系统装入数据。但在ASP.NET里,你将会拥有一个"data-bound",这意味着它会与数据源连接,并会自动装入数据。
这些功能听起来简直是妙不可言,但是让我们细细的来检验一下。通过传统的ASP和ADO,你能够选择在哪里放置数据库游标(服务器一边或是用户一边),至于其它的,是依靠你想要创建的性能和功能类型来做决定。但是在ASP+里,你不再有选择。因为在web controls和服务器之间的 链接,迫使你不得不将所有的事物都放置在客户方。对于客户和服务器来说,不啻于一个性能中心,因为它必须将所有的数据存储在本地内存里。
Web controls 也在严格的XML 术语中引进了新的语法。因此,你会不再有比较松散的代码编辑过程,你必须关闭所有的标记符,使用定义等等。当然,大多数人对于适应这个功能会感到非常痛苦,但是严格的的代码编辑过程通常意味着更少的错误。
另一方面关于web forms 缺陷在于,要想使用web form的大部分功能,你必须使用forms 的POST 方法;例如,state 管理。当你使用GET方法时,所有的all best 会被关闭掉,你就不能使用相应的功能。这个限制实在太没必要了。
ASP.net Server Controls
许多系统过去的组成部分现在成为ASP.NET Server Controls。例如:ad rotator已升级,并开始用XML来存储它的信息,但不仅仅于此。这儿有一整套控制系统,它可以做任何事情,从代为管理你的表单状态到显示日历、桌面。事实上,几乎每HTML元素都有ASP.NET Server Controls,通过ASP.NET Server Control,可以与HTML元素程式化的相互影响。例如,你不再需要为了维持一个在LISTBOX里选定的 OPTION而大走弯路。你只需指示LISTBOX 在服务器里运作并代你进行管理就可以了。更为方便的是,你只需设定好程序,LISTBOX就会按指令依次显示选定的项目。
也许在这个新的 controls中最有趣的莫过于 DataGrid。Datagrid是一个多列的数据绑定网格,通过它你可以轻而易举的将数据置于其中。它同时提供分页、排序等所有你所期望的功能。我们看一个Datagrid的例子.
注:我们将在另外的文章里介绍Datagrid的属性和方法。
$#@60;%@ Page language="C#" src="DataGrid.cs" inherits="Sample ataGridPage"%$#@62;
...
$#@60;ASP:DataGrid runat=server id="titlesGrid"$#@62;
$#@60;/asp:DataGrid$#@62;
上面的 .aspx 文件显示在不设置 DataGrid 控件任何属性的情况下对其进行声明。
DataGrid.cs:
namespace Samples {
...
public class DataGridPage : Page {
protected DataGrid titlesGrid;
public ICollection GetTitlesList() {
// 从在应用程序状态中高速缓存的 DataSet 中检索标题列表。
DataSet titlesDataSet = (DataSet)Application["TitlesDataSet"];
if (titlesDataSet != null) {
return titlesDataSet.Tables["Title"].DefaultView;
}
else {
return null;
}
}
private void LoadTitlesGrid() {
// 从数据库中检索数据
ICollection titlesList = GetTitlesList();
// 设置控件的数据源
titlesGrid.DataSource = titlesList;
// 并使它用此数据源构建其项目
titlesGrid.DataBind();
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
if (!IsPostBack) {
// 首次请求此页
LoadTitlesGrid();
}
}
}
}
记录丢失,对于程序员来说是一个非常严重的事情。在新的系统中, 中心对象是Dataset。它与recordset相类似,是数据内在存储记忆的副本。Dataset对于您的开发来说是中心所在,但是现在,我只能说它只是相近与XML,使程式在简单化和统一化的过程中,相对简单。你还是可以用你过去用过的来处理一切…(除了服务器端游标)…