什么是asp.net的web forms
asp.net web forms 页面框架是可升级的通用语言运行时刻(clr)程序模型,用来在服务器端动态生成web页面。(美国人说话就是别扭,其实web forms就是asp.net编写的页面)
作为asp的合理演化(asp.net对现存的asp提供语法兼容),asp.net web forms框架的设计目的,是用来解决asp模式的不足。它提供:
· 创建和使用可重用的用户界面控件,封装常用的功能,减少页面开发者书写代码的工作量。
· 为开发者提供结构清晰、风格井然的页面逻辑(而不是“意大利面条”的结构)。
· 提供强大的所见即所得(wysiwyg)的页面开发工具(asp代码对于工具是不透明的)
本教材的这一部分内容提供高水平的代码,对asp.net web forms的关键功能做一个初步介绍。后续的章节将更深入地剖析asp.net web forms的功能
书写第一个web forms页面
asp.net web forms 页面是以aspx为扩展名的文本文件。他们可以通过iis虚拟根目录树来进行配置。当浏览器客户端请求.aspx资源的时候,asp.net运行时刻库分析和编译目标文件,形成.net框架类。这个类能够用来动态的处理即将开始的请求。(注意:.aspx文件只有在第一次被访问的时候编译;编译后的结果在以后的请求中被重复利用)。
可以简单的把html文件的扩展名改为aspx,从而得到一个asp.net文件(不需要修改任何代码)。例如,下面的例子演示一个html页,它收集用户的姓名和分类偏好,然后在按下按钮的时候提交表单。
c# intro1.aspx
重要提示:注意点击lookup 按钮的时候什么也不会发生。这是因为.aspx文件仅仅包含静态的html(没有任何动态的内容)。因此,同样的html将在每一次往返的的时候,返回给客户端,表单的字段内容在提交过程中丢失。
使用asp的<% %>引用标志
asp.net对现有的asp页面提供语法兼容。这种兼容包括<% %>代码引用块,在.aspx文件中,它可以和html内容混合使用。这些代码块在引用的时候从上倒下执行。
下面的例子演示了在html块中,如何使用<% %>引用标志来实现循环(依次增大字体尺寸)
c# intro2.aspx
重要提示:与asp不同,上面<% %>块中使用的代码是真正编译过的,而不是脚本引擎的解释执行。因此提高了运行时的执行效率。
asp.net页面开发者可以利用<% %>代码块动态的修改html的输出,就像使用asp一样。例如,下面的例子演示了如何使用<% %>实现响应客户端提交的结果。
c# intro3.aspx
重要提示:<% %>代码块提供了一种有力的方法,可以实现从asp.net页面定制和操作文本输出,但是,却没有提供结构清晰的程序模式。正如上面的例子,开发者仅仅使用<% %>代码块,就必须在请求发送往返中,自己管理页面状态,自己管理解释后送出的值。
asp.net服务器控件介绍
除了使用(或者说作为一种代替)<% %>来编动态内容的程序以外,asp.net页面开发者可以使用asp.net 服务器控件来设计web页面程序。
在.aspx文件中声明服务器空间的时候,使用asp.net特定的标签或者使用包含 runat="server" 属性的html标签。html标签作为控件使用的情况,在名称空间system.web.ui.htmlcontrols中定义。任何不能映射到控件的标签,被赋值为system.web.ui.htmlcontrols.htmlgenericcontrol类型。
下面的例子使用了4个服务器控件:<form runat=server>, <asp:textbox runat=server>, <asp:dropdownlist runat=server>, 和 <asp:button runat=server>。在运行时刻,这些服务器控件自动生成html内容。
c# intro4.aspx
重要提示:在传递到服务器端的循环往返(rount trips-----我不知道如何准确的翻译这个词汇,他的意思是从客户端提交数据到服务器,然后从服务器返回数据的过程)过程中,这些服务器控件自动保持任何客户端输入的值(它代替了循环往返的时候,表单字段保存在<input type="hidden">中的做法)。另外请注意,asp.net中保持数据不需要任何客户端的脚本支持除了支持标准的html输入控件之外,asp.net允许开发者在页面中使用更丰富的定制控件。例如,下面的例子演示了如何在页面上使用<asp:adrotator>控件,实现动态轮显广告c# intro5.aspx
新闻热点
疑难解答
图片精选