资源描述
开发Web应用程序 中国地质大学(武汉)杨之江 内容lASP.NET的开发环境配置l编写ASP.NETWeb应用程序lASP.NET服务器端控件l创建Web服务lQ&A1 ASP.NET的开发环境配置 l首先并不是所有的Windows系统都可作为ASP.NET的开发平台,Windows98系统系列就不支持ASP.NETl其次为了能够创建ASP.NETWeb应用程序,系统要安装微软的Internet信息服务器(IIS),如果使用的系统是Windows2000或WindowsXP系列,那它们直接就带有IIS,可以通过【控制面板】中的添加/删除程序来安装2 编写ASP.NET Web应用程序 lVisualStudio.NET是一个功能十分强大的开发工具,我们先来使用它创建一个简单的Web应用程序,然后逐步对这个程序进行讲解。l【例】l打开VisualStudio.NET,选择【文件】|【新建】|【项目】命令。从【模板】栏内选择【ASP.NETWeb应用程序】。如果是第一次创建,Web应用程序的名称将是WebApplication1,接受默认值,单击【确定】按钮。这时将出现WebForm1.aspx的设计界面,现在可以向其中添加控件形成一个完整的Web窗体。2.1 ASP.NET的基本语法l基本文件名种类:l.asax文件:ASP.NET的系统环境设置文件。l.aspx文件:内含ASP程序代码的文件,浏览器可执行此类文件,向服务器提出浏览请求。l.asmx文件:制作WebServices的源文件。l.sdl文件:制作WebServices的XML格式的文件。l.vb或.cs文件:在非ASP.NET环境下,执行WebServices的文件。l.aspc文件:可重复使用多个.aspx文件,此文件内可含有控件。l.ascx文件:内含UserControl的文件,可内含在多个.aspx文件中。2.1 ASP.NET的基本语法l声明代码的语法代码l内联代码段或者lASP.NET服务器端控件语法lASP.NETHTML服务器端控件语法l数据绑定语法lObject标记语法例如l注释语法2.2 Code Behind技术laspx例子llllWebForm1llllllllLabell2.2 Code Behind技术lcs例子lpublicclassWebForm1:System.Web.UI.PagellprotectedSystem.Web.UI.WebControls.TextBoxTextBox1;lprotectedSystem.Web.UI.WebControls.ButtonButton1;lprotectedSystem.Web.UI.WebControls.LabelLabel1;lprivatevoidPage_Load(objectsender,System.EventArgse)l/在此处放置用户代码以初始化页面lprivatevoidInitializeComponent()lthis.Button1.Click+=newSystem.EventHandler(this.Button1_Click);lthis.Load+=newSystem.EventHandler(this.Page_Load);llprivatevoidButton1_Click(objectsender,System.EventArgse)linti=100;stringstr=Convert.ToString(i,2);lLabel1.Text=str;ll2.3 Web窗体 l在Web窗体页中,用户界面编程分为两个不同的部分:可视控件和逻辑。l视觉元素称作Web窗体“页”(page)。这种页由一个包含静态HTML和/或ASP.NET服务器控件的文件组成。Web窗体页用作要显示的静态文本和控件的容器。lWeb窗体页的逻辑由代码组成,开发者创建代码与窗体进行交互,编程逻辑位于与用户界面文件不同的文件中,该文件称作“代码隐藏”文件,用aspx.cs”作为扩展名,在代码隐藏文件中编写的逻辑使用C#来编写。2.3 Web窗体的事件响应 像在Windows窗体上使用控件一样,Web控件和HTML控件也有与它们相关的事件,可以为这些事件生成代码。每个控件都有它们自己的特殊事件,例如,按钮控件有Click事件,文本框有TextChanged事件。Web窗体事件和Windows窗体事件有一个重要的区别:Windows窗体的事件是在本地机进行处理的;与Web窗体事件相关的代码被存储在Web服务器上的的代码文件中,这意味着当运行在用户浏览器上的Web窗体中的事件被触发时,窗体不得不回叫Web服务器来处理它的事件。当事件被触发时,Web窗体页再次与Web服务器通信来处理这些代码。因此,过多地使用控件事件会造成频繁地访问服务器。3 ASP.NET服务器端控件 u3.1Web服务器控件u3.2HTML服务器控件u3.3验证控件u3.4用户控件3 ASP.NET服务器端控件 l服务器端控件是ASP.NET编程的基础,编写Web页面很大程度上就是将控件拼凑起来,以使其协同工作。lWeb窗体总共可以加入4种控件,它们是:Web服务器控件,HTML服务器控件,验证控件和用户控件3.1 Web服务器控件 lVisualStudio.NET提供了众多的Web服务器控件,这些控件都包含多种属性,更改这些属性可使控件具有不同的功能。l控件的属性既可以在VisualStudio.NET的属性对话框中进行静态更改,也可以在程序运行时进行动态更改。3.1 Web服务器控件-文本框控件 lTextBox控件l文本框控件提供了向Web窗体输入信息的方法,可以将文本框的TextMode属性赋为SingLine、MultiLine和Password来改变它的行为模式3.1 Web服务器控件-文本框控件的公共属性名名 称称描描 述述Columns获获取或取或设设置文本框的置文本框的显显示示宽宽度度(以字符以字符为单为单位位)MaxLength获获取或取或设设置文本框中最多允置文本框中最多允许许的字符数的字符数ReadOnly获获取或取或设设置一个置一个值值,用于指示能否更改,用于指示能否更改TextBox 控件的内控件的内容容Rows获获取或取或设设置多行文本框的置多行文本框的显显示高度示高度Text获获取或取或设设置文本框的文本内容置文本框的文本内容TextMode获获取或取或设设置文本框的行置文本框的行为为模式模式Wrap获获取或取或设设置一个置一个值值,该值该值指示文本框内的文本内容是否指示文本框内的文本内容是否换换行行3.1 Web服务器控件-文本框控件的公共方法名名 称称描描 述述AppendText向文本框的当前文本追加文本向文本框的当前文本追加文本Clear从文本框控件中清除所有文本从文本框控件中清除所有文本ClearUndo从从该该文本框的撤消文本框的撤消缓缓冲区中清除关于最近操作的信息冲区中清除关于最近操作的信息Copy将文本框中的当前将文本框中的当前选选定内容复制到剪定内容复制到剪贴贴板板Cut将文本框中的当前将文本框中的当前选选定内容移定内容移动动到剪到剪贴贴板中板中Paste用剪用剪贴贴板的内容替板的内容替换换文本框中的当前文本框中的当前选选定内容定内容Hide对对用用户隐户隐藏控件藏控件3.1 Web服务器控件-按钮控件lVisualStudio.NET的工具箱中提供了3种按钮控件:普通按钮Button、显示超链接样式的按钮LinkButton和显示图像样式的ImageButton。l按钮控件发生Click事件时会直接导致向服务器端提交。3.1 Web服务器控件-按钮控件公共属性名名 称称描描 述述CausesValidation获获取或取或设设置一个置一个值值,该值该值指示在指示在单击单击Button控件控件时时是否是否执执行了行了验证验证Text获获取或取或设设置在置在Button控件中控件中显显示的文本示的文本标题标题ToolTip获获取或取或设设置当鼠置当鼠标标指指针悬针悬停在停在 Web 服服务务器控件上器控件上时显时显示的文本示的文本 Button和LinkButton控件的公共属性名名 称称描描 述述AlternateText获获取或取或设设置当置当图图像不可用像不可用时时,Image控件中控件中显显示的替示的替换换文本。支持工具提示功能的文本。支持工具提示功能的浏览浏览器将此文本器将此文本显显示示为为工具提示工具提示ImageAlign获获取或取或设设置控件相置控件相对对于于Web页页上其他元素的上其他元素的对齐对齐方式方式ImageUrl获获取或取或设设置在控件中置在控件中显显示的示的图图像的位置像的位置ImageButton控件的公共属性 3.1 Web3.1 Web服务器控件服务器控件-复选框和单选按钮控件复选框和单选按钮控件l复选框控件(CheckBox、CheckBoxList)和单选按钮控件(RadioButton、RadioButtonList)l复选框控件和单选按钮控件十分类似,它们都允许从多个选项中进行选择,不同的是复选框控件允许同时选择多项,而单选按钮控件每次只能选择一项。CheckBoxList控件和RadioButtonList控件可以单独使用,而CheckBox控件和RadioButton控件则需要多个一起使用。它们都可以和数据源进行绑定,不过比较起来使用CheckBoxList控件和RadioButtonList控件访问数据更为方便一些3.1 Web3.1 Web服务器控件服务器控件-复选框和单选按钮控件复选框和单选按钮控件3.1 Web3.1 Web服务器控件服务器控件-复选框和单选按钮控件复选框和单选按钮控件l对CheckBoxList控件和RadioButtonList控件来说,可以直接通过Items属性来设置显示项和标签。打开这些控件属性对话框中的Items项,将出现ListItem集合编辑器l可以在左侧【成员】栏内添加显示项,右边的属性栏可以设置该项的属性。Selected属性表明该项是否被选定,Text属性的值将作为该项的显示标签,Value的值可以作为编程时的内部值使用,该值可与Text属性采用不同的值3.1 Web3.1 Web服务器控件服务器控件-复选框和单选按钮控件复选框和单选按钮控件名名 称称描描 述述Checked获获取或取或设设置一个置一个值值,该值该值指示是否已指示是否已选选中控件中控件Text获获取或取或设设置与控件关置与控件关联联的文本的文本标签标签TextAlign获获取或取或设设置与控件关置与控件关联联的文本的文本标签标签的的对齐对齐方式方式 CheckBox和RadioButton控件的公共属性3.1 Web3.1 Web服务器控件服务器控件-复选框和单选按钮控件复选框和单选按钮控件名名 称称描描 述述CellPadding获获取或取或设设置表置表单单元格的元格的边边框和内容之框和内容之间间的距离的距离(以像素以像素为单为单位位)CellSpacing获获取或取或设设置置单单元格之元格之间间的距离的距离(以像素以像素为单为单位位)DataMember获获取或取或设设置要置要绑绑定到控件的定到控件的 DataSource 中的特定表中的特定表DataSource获获取或取或设设置填充列表控件置填充列表控件项项的数据源的数据源DataTextField获获取或取或设设置置为为列表列表项项提供文本内容的数据源字段提供文本内容的数据源字段DataTextFormatString获获取或取或设设置格式化字符串,置格式化字符串,该该字符串用来控制如何字符串用来控制如何显显示示绑绑定定到列表控件的数据到列表控件的数据DataValueField获获取或取或设设置置为为各列表各列表项项提供提供值值的数据源字段的数据源字段Items获获取列表控件取列表控件项项的集合的集合RepeatColumns获获取或取或设设置要在控件中置要在控件中显显示的列数示的列数RepeatDirection获获取或取或设设置一个置一个值值,该值该值指示控件是垂直指示控件是垂直显显示示还还是水平是水平显显示示RepeatLayout获获取或取或设设置复置复选选框的布局框的布局SelectedIndex获获取或取或设设置列表中置列表中选选定定项项的最低序号索引的最低序号索引SelectedItem获获取列表控件中索引最小的取列表控件中索引最小的选选定定项项 CheckBoxList和RadioButtonList控件的公共属性 3.1 Web服务器控件-DropDownList控件和ListBox控件lDropDownList控件和ListBox控件都提供了选择特定项的功能,不同处在于DropDownList控件提供一个下拉列表框进行选择,而ListBox控件直接提供多个选项,而且还可同时选择ListBox控件中的多项l与复选框控件和单选按钮相同,它们都可以通过属性对话框的Items项打开ListItem集合编辑器对显示项进行添加删除,它们也都具有数据源绑定功能3.1 Web3.1 Web服务器控件服务器控件-DropDownList-DropDownList控件和控件和ListBoxListBox控件控件ListItem集合编辑器3.1Web3.1Web服务器控件服务器控件-DropDownList-DropDownList控件公共属性控件公共属性名名 称称描描 述述Items获获取列表控件取列表控件项项的集合的集合SelectedIndex已重写。已重写。获获取或取或设设置置 DropDownList 控件中的控件中的选选定定项项的索引的索引SelectedItem获获取列表控件中索引最小的取列表控件中索引最小的选选定定项项3.1 Web3.1 Web服务器控件服务器控件-ListBox-ListBox控件公共属性控件公共属性名名 称称描描 述述Items获获取列表控件取列表控件项项的集合的集合Rows获获取或取或设设置置 ListBox 控件中控件中显显示的行数示的行数SelectedIndex获获取或取或设设置列表中置列表中选选定定项项的最低序号索引的最低序号索引SelectedItem获获取列表控件中索引最小的取列表控件中索引最小的选选定定项项SelectionMode获获取或取或设设置置 ListBox 控件的控件的选择选择模式模式3.2 HTML服务器控件 lASP.NET的Web窗体也支持HTML服务器控件,在工具箱的HTML子项就可以找到它们,你可能会发现HTML服务器控件和刚才介绍的Web服务器控件有些重复,它同样也具有按钮控件、文本框控件等,那它与Web控件有什么区别呢,什么时候应该用Web服务器控件什么时候应该用HTML服务器控件lHTML服务器控件与Web服务器控件的区别l浏览器都支持基本的HTML元素,而应用这些基本的HTML元素可以组合出复杂的元素,HTML服务器控件和基本的HTML元素是对应的。l使用Web服务器控件时,从服务器方的角度来看根本不知道最终控件会在浏览器中用什么样的HTML元素显示出来,显示一个Web服务器控件可能需要组合多个HTML元素,也就是说浏览器显示什么样的HTML元素对服务端是透明的。lHTML服务器控件提供了操纵浏览器HTML元素的机会。3.2 HTML服务器控件 l【例】新建一个Web项目,将位置栏中的项目名改为TestHTML。从【工具箱】中的HTML栏内添加一个Button控件,切换到Web窗体的HTML对话框,将会显示aspx文件的内容,如以下代码所示:lllll无标题页llllllll3.2 HTML服务器控件 l该Button控件在aspx文件里直接对应着一个HTML元素,因此会不加处理地直接传给浏览器,其他的HTML控件也与此类似。l也可以在服务器端处理HTML服务器控件的事件,不过要先使它们能在服务器端运行。在上面的例子的Web窗体的设计对话框中右击Button控件,从中选择【作为服务器控件运行l在Button控件的左上方会出现一个小绿色箭头,它就表明该控件将作为服务器控件运行,这时在aspx文件里对应的行变成:l3.2 HTML服务器控件 使HTML控件作为服务器控件运行 3.2 HTML服务器控件 l通过加入runat=“server”使它从简单的HTML元素变成了HTML服务器控件,这样就可以像Web服务器对它进行服务器端编程。在上面的设计对话框中双击Button控件将切换到代码编辑对话框,在Button1_ServerClick方法下填写如下代码:lprivatevoidButton1_ServerClick(objectsender,System.EventArgse)ll/改变按钮标签lButton1.Value=Click;ll运行这个程序,单击Button按钮,页面刷新过后Button按钮的标签就变成了Click。该Button按钮的回发也是由客户端脚本程序产生的,可以使用上面介绍查看浏览器内容的方法来具体看一下实现过程,这些客户端脚本程序是Web服务器处理ASP.NET程序时产生的。l现在就面临着如何在Web服务器控件和HTML服务器控件直接选择的问题,这里建议如果偏爱使用RAD编程模型的话最好使用Web服务器控件,如果想更好地控制浏览器的显示,与客户端脚本程序交互,那么就请用HTML服务器控件。web服务器控件 HTML服务器控件和HTML控件的区别(1)lHtml控件最常用,出现最早lweb服务器控件(ASP.NETServerControl)与WinForm开发相似lHTML服务器控件(HTMLServerControl)向下兼容基于ASP系统的移植而推出的介于以上两者之间的权宜产物web服务器控件 HTML服务器控件和HTML控件的区别(2)lHtml控件的标签lHtml服务器控件的标签lHtml服务器控件其实就是Html控件的基础上加上runat=server所构成的控件lWeb服务器控件的标签lWeb服务器控件会根据情况在浏览器端产生一个或多个对应的Html标签web服务器控件 HTML服务器控件和HTML控件的区别(3)lHtml控件不能在服务器端控制,只能在浏览器端通过javascript等脚本语言操作lHtml服务器控件设定了runat=server属性后,页面对象会将该控件载入控制器,服务器端的代码就能对其进行控制lHtml服务器控件在页面执行完毕后会被转换成Html标注,然后当成字符串流发送到浏览器端,浏览器端的脚本能够进行操作。lWeb服务器控件的操作则是由页面把Form发回服务器,然后完全由服务器端代码处理web服务器控件 HTML服务器控件和HTML控件的区别(4)lHtml控件不能在服务器端控制,只能在浏览器端通过javascript等脚本语言操作lHtml服务器控件设定了runat=server属性后,页面对象会将该控件载入控制器,服务器端的代码就能对其进行控制lHtml服务器控件在页面执行完毕后会被转换成Html标注,然后当成字符串流发送到浏览器端,浏览器端的脚本能够进行操作。lWeb服务器控件的操作则是由页面把Form发回服务器,然后完全由服务器端代码处理Web服务器控件、Html服务器控件和Html控件的优缺点lHtml控件和Html服务器控件需要编码以保持浏览器兼容。lWeb服务器控件能够检测浏览器的兼容性,保持表现的一致lHtml服务器控件通过为Html控件添加runat=server以实现ASP程序的移植。l将ASP程序移植成使用Web服务器控件的ASP.Net程序相当于重写新的应用lHtml控件和Html服务器控件是标准控件,能够用浏览器端脚本语言操作。l使用Web服务器控件提供的对象模型,能够得到和WinForm类似的编程体验,而且无需再学习不同的脚本语言。lWeb服务器内部的代码并不开放,你无法获得比较直接的控制Web服务器控件、Html服务器控件和Html控件 小结lHtml服务器控件作为一个过渡的实现,虽然能够兼顾浏览器端和服务器端,终究是一个奇怪的存在,尽量少使用为妙l从微软的角度,良好封装的Web服务器控件提供了大量的便利,同时WebForm和WinForm开发模式的差异使得相互的经验能够互通,当然是多使用Web服务器控件为好。不过Web服务器控件的缺点是占用服务器资源,页面Postback过多l存在的就是合理的,Html还是要会地,Javascript当然是要好好学地,Web开发各种奇奇怪怪的标签共存于Page中的场面短时间内是不可能消失地3.3 验证控件 lASP.NET提供了多种验证控件l这些验证控件都支持服务器端验证,如果浏览器支持DHTML的话也可提供客户端验证。如果运用得当客户端验证可以有效地减少与服务器端的交互,极大地提高Web应用程序的性能。l验证控件通常要认证其他控件的有效性,因而必须和其他控件一起使用,它们都具有一个属性ControlToValidate来指定要验证的控件,这个值是必需的,否则验证控件将会出错3.3 验证控件 名名 称称描描 述述RequiredFieldValidator确保用确保用户户不会跳不会跳过过某一某一项项CompareValidator使用比使用比较较运算符运算符(小于、等于、大于等小于、等于、大于等)比比较较用用户户的的输输入与一个常量入与一个常量值值或另一控件的属性或另一控件的属性值值RegularExpressionValidator检查项检查项与正与正则则表达式定表达式定义义的模式是否匹配。的模式是否匹配。这这种种验证类验证类型允型允许检查许检查可可预预知的字符序列,如知的字符序列,如社会保障号、社会保障号、电电子子邮邮件地址、件地址、电话电话号号码码、邮邮政政编码编码等中的字符序列等中的字符序列CustomValidator使用自己使用自己编编写的写的验证逻辑检查验证逻辑检查用用户户的的输输入入ValidationSummary在一个在一个统统一摘要中一摘要中显显示示页页上所有其他上所有其他验证验证控件控件的的错误错误信息信息RangeValidator检查检查用用户户的的输输入是否在指定的上下限内。可以入是否在指定的上下限内。可以检查检查数字数字对对、字母字符、字母字符对对和日期和日期对对的范的范围围。边边界可以表示界可以表示为为常数或从其他控件常数或从其他控件导导出的出的值值3.3 验证控件-示例l【例】打开VisualStudio.NET新建一个Web应用程序项目,命名为Validator。向Web窗体中添加标签控件、输入控件和验证控件。l依次放入5个标签控件,设定它们的Text属性分别为“姓名”、“年龄”、“密码”、“确认密码”和“E-mail”。在标签控件之后依次放入5个输入框控件,它们的ID在默认状态下会自动设为TextBox1、TextBox2、TextBox3、TextBox4和TextBox5。设定TextBox3和TextBox4的TextMode属性为Password。l在TextBox1、TextBox2、TextBox4和TextBox5控件后分别放入一个RequiredFieldValidator验证控件,分别将这些RequiredFieldValidatork控件的ErrMessage属性设定为“姓名不能为空”、“年龄不能为空”、“密码不能为空”和“E-mail不能为空”,ControlToValidate属性分别设置为TextBox1、TextBox2、TextBox4和TextBox5。lTextBox2后再放入一个RangeValidator验证控件其ErrMessage属性设为“值不合法”,ControlToValidate属性设为TextBox2,MaximumValue属性设为100,Minimum属性设为1,Type属性设为Integer。lTextBox4后再放入一个CompareValidator控件,它的ErrMessage属性设为“两次输入不一致”,ControlToCompare属性设为TextBox3,ControlToValidtae属性设为TextBox4。lText5后再放一个RegularExpressionValidator控件ErrMessage属性设为“输入不正确”,ControlToValidator属性设为TextBox5,当在属性对话框选择ValidationExpress属性时会弹出【正则表达式编辑器】对话框,从中选择【Internet电子邮件地址】l最后向窗体中添加一个Button控件和一个ValidationSummary控件。3.3 验证控件-示例lRequiredFieldValidator控件保证它所验证控件的输入不能为空lRangeValidator控件保证了它所验证控件的输入应在一定的范围内。在本例中保证在TextBox2中输入为1到100之间的整型值。lCompareValidator控件将它验证的控件的内容与另一个控件或另一个值进行比较,在本例中使用了ControlToCompare属性,以此来表明需要与另一控件相比较,默认的比较操作属性Operator的值是Equal(相等),这样该控件的功能其实就是保证两次密码输入相等。lRegularExpressionValidator保证控件的输入应满足特定的正则表达式规则,本例指定为“Internet电子邮件地址”,即要求TextBox5中要输入一个电子邮件地址。这些验证控件的EnableClientScript现在都默认为True,这就表明将生成浏览器脚本在客户端进行验证。l运行程序,在验证控件对应的文本框中必须正确输入,否则将会在验证控件的位置出现错误信息,在ValidationSummary控件中则会显示出所有这些错误信息lCustomValidator控件提供了用户自定义的功能,当上面的验证控件都无法满足要求的时候就需要CustomValidator控件了。它提供了自定义客户端与服务器端验证的功能,它包含有一个ClientValidationFunction属性和ServerValidate事件,可以分别与客户端和服务器端进行绑定,然后编写满足自己需要的验证函数3.3 验证控件-验证控件的使用 3.3 验证控件-正则表达式编辑器 3.3 验证控件-程序的运行3.4 用户控件 l当ASP.NET提供的控件都无法满足要求的时候就需要自己编写控件了,这些控件叫做用户控件。可以使用两种方式来创建用户控件l一种方式是把以前编写的Web页面包装成控件,这样的控件称为Web用户控件l另一种方式是从.NET的某个框架类继承一个新类用来生成控件,这样的控件称为Web自定义控件3.4 用户控件-Web用户控件l先来介绍第一种方式,下面创建一个Web窗体,然后把它转化成Web用户控件的形式,接着再创建一个新的Web窗体来使用这个控件。l【例】新建一个ASP.NETWeb应用程序,命名为MyControl,在窗体上放入一个标签控件、一个文本框控件和一个Button控件。l双击Button控件将切换到代码编辑对话框,在Button1_Click方法中填写下列代码:lprivatevoidButton1_Click(objectsender,System.EventArgse)ll/改变文本标签的内容lLabel1.Text=Hello+TextBox1.Text;ll切换到Web窗体的HTML代码对话框,将显示出WebForm1.aspx文件的内容。现在依次进行下面步骤,将Web页面转换成Web控件。l(1)从文件中删除标签、标签、标签及内容、标签和标签。l(2)将文件第一行的Page改为Control并把WebForm1.aspx.cs更名为WebForm1.ascx.cs3.4 用户控件-Web用户控件 3.4 用户控件-Web用户控件 l(3)在解决方案对话框中选中WebForm1.aspx,右击选择【重命名】,将WebForm1.aspx的名字改为WebForm1.ascx,这时文件WebForm1.aspx.cs也会自动更名为WebForm1.ascx.cs。将WebForm1.ascx.cs中的lpublicclassWebForm1:System.Web.UI.Pagel一行改为lpublicclassWebForm1:System.Web.UI.UserControll(4)保存项目,Web用户控件就完成了。l这个Web用户控件只实现了很简单的功能。为使一个Web对话框变为控件必须首先将其中的页面元素删除,其次由于Web用户控件的扩展名为ascx,因此也要将aspx扩展名变为ascx,最后Web用户控件应由用户控件类派生。l下面用一个新的Web应用程序项目来测试一下刚才生成的Web用户控件。l新建一个ASP.NETWeb应用程序,命名为UserControl。l在解决方案资源管理器对话框内的UserControl项上右击,选择【添加现有项】,弹出【添加现有项】对话框,文件类型中选择【公用Web文件】,定位到MyControl目录选定WebForm1.ascx,单击【打开】按钮。l添加MyControl引用l这时就把Web用户控件添加到了UserControl项目中,在解决方案资源管理器内单击WebForm1.ascx,把它拖动到Web对话框中。Web对话框中就会出现刚才新建的Web用户控件l由于现在的控件没有设计器的支持,因此在设计对话框中没有显示出Web用户控件的显示界面。l执行这个项目,在文本框内输入“maj”,单击按钮,这时标签中就会显示出“Hellomaj”。整个页面的功能其实都是由一个Web用户控件提供的。l可以将更复杂的窗体组合在一起做成Web用户控件,使用在项目里以达到代码重用的目的3.4 用户控件-添加现有项对话框 3.4 用户控件-向窗体中添加Web用户控件3.4 用户控件-使用Web用户控件 3.4 用户控件-Web自定义控件 lWeb自定义控件是一种更方便、功能更强大的设置用户控件的方式。它最终将编译成DLL文件,可以方便地进行发布。l【例】新建一个项目,在右侧【模板】栏内选择【Web控件库】,将项目名称改为MyCustomControl,单击【确定】按钮。lusingSystem;lusingSystem.Web.UI;lusingSystem.Web.UI.WebControls;lusingSystem.ComponentModel;lnamespaceMyCustomControlllDefaultProperty(Text),lToolboxData()lpublicclassWebCustomControl1:System.Web.UI.WebControls.WebControlll/l/将此控件呈现给指定的输出参数l/l/要写出到的HTML编写器l/输出当前时间lprotectedoverridevoidRender(HtmlTextWriteroutput)lloutput.Write(DateTime.Now.ToString();l3.4 用户控件-Web自定义控件 l上面的代码实现了一个显示出当前时间的控件。当控件呈现在页面上时会调用Render方法,本例中当前的时间就是在Render方法中输出的。这个控件没有公开任何的属性和事件。l保存项目,选择【生成】|【生成MyCustomControl】命令,这将会在该项目对应目录的binDebug子目录下生成名为MyCustomControl.dll的文件。这样这个简单的Web自定义控件就生成了。l现在演示如何使用这个控件。新建一个ASP.NET Web应用程序项目,命名为UseCustomControl。下一步要把新建的控件加入到工具箱内,选择【工具】|【选择工具箱】命令l单击【浏览】按钮,在弹出的对话框中选定CustomControl项目所在目录,选定文件CustomControl.dll,单击【确定】按钮。这样在Web的工具箱中就会出现一个新的控件。l选定该控件并把它添加到窗体上。执行这个项目。l在浏览器中显示出了当前的时间。例子虽然简单但是却演示了Web自定义控件的基本生成方法,生成用户自定义控件的过程都是一致的,如果综合运用.NET的类库就可以实现更加复杂的自定义控件。l如果想使控件设计时更加美观,可以将System.Design.dll引用到项目里,并从System.Web.UI.Design.ControlDesigner继承一个新类,实现该类的GetDesignTimeHtml方法,并把它加入到自定义控件的属性声明中,这样就可像普通Web服务器控件一样在设计阶段就可以显示出外观3.4 用户控件 向工具箱中添加控件 3.4 用户控件 添加到工具箱中的用户自定义控件 3.4 用户控件 用户自定义控件的使用 4 创建Web服务 u4.1Web服务u4.2一个简单的Web服务u4.3使用Web服务访问数据库4.1 Web服务 lWeb服务提供了一种调用网络应用的新方法,刚一出现就表现出了极大的生命力,它也许会带来网络应用程序的重大变革l在Internet的发展中,如何使各种应用系统有效集成一直是一个令人头痛的问题。使用不同技术建立起来的Internet应用系统无法互相通信,彼此的功能无法相互调用,造成了网络资源的极大浪费。虽然CORBA、DCOM/COM+等技术为此进行了极大的努力,但目前仍然无法有效地解决问题,Web服务的出现给我们带来了新的希望lWeb服务使用基于XML的消息协议SOAP,提供了规范的数据封包格式并且使用HTTP协议传输,从而可以方便地在各种异构的应用系统之间进行通讯。同样基于XML的WSDL用作Web服务的服务描述,它向外公布了Web服务所提供服务的接口。UDDI则提供了Web服务的服务发现机制4.2 一个简单的Web服务 l下面来创建一个简单的Web服务来演示它的基本组成。l【例】VisualStudio.NET为Web服务提供了强大的支持,借助它可以方便地进行Web服务的开发。l打开VisualStudio.NET,新建项目,在项目模板中选择【ASP.NETWeb服务】,命名为MyWebService。这时将出现设计对话框,现在切换到代码编辑对话框,按下面的程序改变对话框中的代码。lusingSystem;lusingSystem.Collections;lusingSystem.ComponentModel;lusingSystem.Data;lusingSystem.Diagnostics;lusingSystem.Web;lusingSystem.Web.Services;lnamespaceMyWebServicell/Service1的摘要说明l/l/4.2 一个简单的Web服务 l/设定该Web服务的命名空间lWebService(Namespace=http:/ 服务设计器所必需的lInitializeComponent();ll#regionComponentDesignergeneratedcodel/Web服务设计器所必需的lprivateIContainercomponents=null;l/l/设计器支持所需的方法-不要使用代码编辑器修改l/此方法的内容。l/lprivatevoidInitializeComponent()lll/l/清理所有正在使用的资源l/lprotectedoverridevoidDispose(booldisposing)llif(disposing&components!=null)llcomponents.Dispose();llbase.Dispose(disposing);l4.2 一个简单的Web服务 l#endregionl/WEB服务示例l/HelloWorld()示例服务返回字符串HelloWorld
展开阅读全文