C#-开发Web应用程序_第1页
C#-开发Web应用程序_第2页
C#-开发Web应用程序_第3页
C#-开发Web应用程序_第4页
C#-开发Web应用程序_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开发Web应用程序

中国地质大学(武汉)杨之江

yangzhijiang@内容ASP.NET的开发环境配置编写ASP.NETWeb应用程序ASP.NET服务器端控件创建Web服务Q&A1ASP.NET的开发环境配置

首先并不是所有的Windows系统都可作为ASP.NET的开发平台,Windows98系统系列就不支持ASP.NET其次为了能够创建ASP.NETWeb应用程序,系统要安装微软的Internet信息服务器(IIS),如果使用的系统是Windows2000或WindowsXP系列,那它们直接就带有IIS,可以通过【控制面板】中的添加/删除程序来安装2编写ASP.NETWeb应用程序

VisualStudio.NET是一个功能十分强大的开发工具,我们先来使用它创建一个简单的Web应用程序,然后逐步对这个程序进行讲解。【例】打开VisualStudio.NET,选择【文件】|【新建】|【项目】命令。从【模板】栏内选择【ASP.NETWeb应用程序】。如果是第一次创建,Web应用程序的名称将是WebApplication1,接受默认值,单击【确定】按钮。这时将出现WebForm1.aspx的设计界面,现在可以向其中添加控件形成一个完整的Web窗体。2.1ASP.NET的基本语法基本文件名种类:.asax文件:ASP.NET的系统环境设置文件。.aspx文件:内含ASP程序代码的文件,浏览器可执行此类文件,向服务器提出浏览请求。.asmx文件:制作WebServices的源文件。.sdl文件:制作WebServices的XML格式的文件。.vb或.cs文件:在非ASP.NET环境下,执行WebServices的文件。.aspc文件:可重复使用多个.aspx文件,此文件内可含有控件。.ascx文件:内含UserControl的文件,可内含在多个.aspx文件中。2.1ASP.NET的基本语法声明代码的语法<scriptrunat=“server”language=“codelanguage”src=“pathname”>代码</script>内联代码段<%inlinecode%>或者<%inlineexpression%>ASP.NET服务器端控件语法ASP.NETHTML服务器端控件语法数据绑定语法Object标记语法<objectrunat=“server”/>例如<objectid=“myobjectname”class=“myselectclass”runat=“server”/>注释语法<%--comments--%>2.2CodeBehind技术aspx例子<%@Pagelanguage="c#"Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"Inherits="XXXX.WebForm1"%><HTML> <HEAD> <title>WebForm1</title> <metaname="CODE_LANGUAGE"Content="C#"> <metaname="vs_defaultClientScript"content="JavaScript"> </HEAD> <bodyMS_POSITIONING="GridLayout"> <formid="Form1"method="post"runat="server"><FONTface="宋体"> <asp:TextBoxid="TextBox1"runat="server"Width="265px" Height="48px"></asp:TextBox> <asp:Buttonid="Button1"runat="server"Width="120px"Height="40px" Text="Button"></asp:Button> <asp:Labelid="Label1"runat="server"Width="376px" Height="80px">Label</asp:Label></FONT></form></body></HTML>2.2CodeBehind技术cs例子publicclassWebForm1:System.Web.UI.Page{ protectedSystem.Web.UI.WebControls.TextBoxTextBox1; protectedSystem.Web.UI.WebControls.ButtonButton1; protectedSystem.Web.UI.WebControls.LabelLabel1; privatevoidPage_Load(objectsender,System.EventArgse) { //在此处放置用户代码以初始化页面 } privatevoidInitializeComponent() { this.Button1.Click+=newSystem.EventHandler(this.Button1_Click); this.Load+=newSystem.EventHandler(this.Page_Load); } privatevoidButton1_Click(objectsender,System.EventArgse) { inti=100; stringstr=Convert.ToString(i,2); Label1.Text=str; }}2.3Web窗体在Web窗体页中,用户界面编程分为两个不同的部分:可视控件和逻辑。视觉元素称作Web窗体“页”(page)。这种页由一个包含静态HTML和/或ASP.NET服务器控件的文件组成。Web窗体页用作要显示的静态文本和控件的容器。Web窗体页的逻辑由代码组成,开发者创建代码与窗体进行交互,编程逻辑位于与用户界面文件不同的文件中,该文件称作“代码隐藏”文件,用aspx.cs”作为扩展名,在代码隐藏文件中编写的逻辑使用C#来编写。2.3Web窗体的事件响应像在Windows窗体上使用控件一样,Web控件和HTML控件也有与它们相关的事件,可以为这些事件生成代码。每个控件都有它们自己的特殊事件,例如,按钮控件有Click事件,文本框有TextChanged事件。Web窗体事件和Windows窗体事件有一个重要的区别:Windows窗体的事件是在本地机进行处理的;与Web窗体事件相关的代码被存储在Web服务器上的的代码文件中,这意味着当运行在用户浏览器上的Web窗体中的事件被触发时,窗体不得不回叫Web服务器来处理它的事件。当事件被触发时,Web窗体页再次与Web服务器通信来处理这些代码。因此,过多地使用控件事件会造成频繁地访问服务器。3ASP.NET服务器端控件3.1Web服务器控件

3.2HTML服务器控件

3.3验证控件

3.4用户控件3ASP.NET服务器端控件服务器端控件是ASP.NET编程的基础,编写Web页面很大程度上就是将控件拼凑起来,以使其协同工作。Web窗体总共可以加入4种控件,它们是:Web服务器控件,HTML服务器控件,验证控件和用户控件3.1Web服务器控件

VisualStudio.NET提供了众多的Web服务器控件,这些控件都包含多种属性,更改这些属性可使控件具有不同的功能。控件的属性既可以在VisualStudio.NET的属性对话框中进行静态更改,也可以在程序运行时进行动态更改。3.1Web服务器控件-文本框控件

TextBox控件文本框控件提供了向Web窗体输入信息的方法,可以将文本框的TextMode属性赋为SingLine、MultiLine和Password来改变它的行为模式3.1Web服务器控件-文本框控件的公共属性名称描述Columns获取或设置文本框的显示宽度(以字符为单位)MaxLength获取或设置文本框中最多允许的字符数ReadOnly获取或设置一个值,用于指示能否更改TextBox控件的内容Rows获取或设置多行文本框的显示高度Text获取或设置文本框的文本内容TextMode获取或设置文本框的行为模式Wrap获取或设置一个值,该值指示文本框内的文本内容是否换行3.1Web服务器控件-文本框控件的公共方法名称描述AppendText向文本框的当前文本追加文本Clear从文本框控件中清除所有文本ClearUndo从该文本框的撤消缓冲区中清除关于最近操作的信息Copy将文本框中的当前选定内容复制到剪贴板Cut将文本框中的当前选定内容移动到剪贴板中Paste用剪贴板的内容替换文本框中的当前选定内容Hide对用户隐藏控件3.1Web服务器控件-按钮控件VisualStudio.NET的工具箱中提供了3种按钮控件:普通按钮Button、显示超链接样式的按钮LinkButton和显示图像样式的ImageButton。按钮控件发生Click事件时会直接导致向服务器端提交。3.1Web服务器控件-按钮控件公共属性名称描述CausesValidation获取或设置一个值,该值指示在单击Button控件时是否执行了验证Text获取或设置在Button控件中显示的文本标题ToolTip获取或设置当鼠标指针悬停在Web服务器控件上时显示的文本Button和LinkButton控件的公共属性名称描述AlternateText获取或设置当图像不可用时,Image控件中显示的替换文本。支持工具提示功能的浏览器将此文本显示为工具提示ImageAlign获取或设置控件相对于Web页上其他元素的对齐方式ImageUrl获取或设置在控件中显示的图像的位置ImageButton控件的公共属性

3.1Web服务器控件-复选框和单选按钮控件复选框控件(CheckBox、CheckBoxList)和单选按钮控件(RadioButton、RadioButtonList)复选框控件和单选按钮控件十分类似,它们都允许从多个选项中进行选择,不同的是复选框控件允许同时选择多项,而单选按钮控件每次只能选择一项。CheckBoxList控件和RadioButtonList控件可以单独使用,而CheckBox控件和RadioButton控件则需要多个一起使用。它们都可以和数据源进行绑定,不过比较起来使用CheckBoxList控件和RadioButtonList控件访问数据更为方便一些3.1Web服务器控件-复选框和单选按钮控件3.1Web服务器控件-复选框和单选按钮控件对CheckBoxList控件和RadioButtonList控件来说,可以直接通过Items属性来设置显示项和标签。打开这些控件属性对话框中的Items项,将出现ListItem集合编辑器可以在左侧【成员】栏内添加显示项,右边的属性栏可以设置该项的属性。Selected属性表明该项是否被选定,Text属性的值将作为该项的显示标签,Value的值可以作为编程时的内部值使用,该值可与Text属性采用不同的值3.1Web服务器控件-复选框和单选按钮控件名称描述Checked获取或设置一个值,该值指示是否已选中控件Text获取或设置与控件关联的文本标签TextAlign获取或设置与控件关联的文本标签的对齐方式CheckBox和RadioButton控件的公共属性3.1Web服务器控件-复选框和单选按钮控件名称描述CellPadding获取或设置表单元格的边框和内容之间的距离(以像素为单位)CellSpacing获取或设置单元格之间的距离(以像素为单位)DataMember获取或设置要绑定到控件的DataSource中的特定表DataSource获取或设置填充列表控件项的数据源DataTextField获取或设置为列表项提供文本内容的数据源字段DataTextFormatString获取或设置格式化字符串,该字符串用来控制如何显示绑定到列表控件的数据DataValueField获取或设置为各列表项提供值的数据源字段Items获取列表控件项的集合RepeatColumns获取或设置要在控件中显示的列数RepeatDirection获取或设置一个值,该值指示控件是垂直显示还是水平显示RepeatLayout获取或设置复选框的布局SelectedIndex获取或设置列表中选定项的最低序号索引SelectedItem获取列表控件中索引最小的选定项CheckBoxList和RadioButtonList控件的公共属性

3.1Web服务器控件-DropDownList控件和ListBox控件DropDownList控件和ListBox控件都提供了选择特定项的功能,不同处在于DropDownList控件提供一个下拉列表框进行选择,而ListBox控件直接提供多个选项,而且还可同时选择ListBox控件中的多项与复选框控件和单选按钮相同,它们都可以通过属性对话框的Items项打开ListItem集合编辑器对显示项进行添加删除,它们也都具有数据源绑定功能3.1Web服务器控件-DropDownList控件和ListBox控件ListItem集合编辑器3.1Web服务器控件-DropDownList控件公共属性名称描述Items获取列表控件项的集合SelectedIndex已重写。获取或设置DropDownList控件中的选定项的索引SelectedItem获取列表控件中索引最小的选定项3.1Web服务器控件-ListBox控件公共属性名称描述Items获取列表控件项的集合Rows获取或设置ListBox控件中显示的行数SelectedIndex获取或设置列表中选定项的最低序号索引SelectedItem获取列表控件中索引最小的选定项SelectionMode获取或设置ListBox控件的选择模式3.2HTML服务器控件

ASP.NET的Web窗体也支持HTML服务器控件,在工具箱的HTML子项就可以找到它们,你可能会发现HTML服务器控件和刚才介绍的Web服务器控件有些重复,它同样也具有按钮控件、文本框控件等,那它与Web控件有什么区别呢,什么时候应该用Web服务器控件什么时候应该用HTML服务器控件HTML服务器控件与Web服务器控件的区别浏览器都支持基本的HTML元素,而应用这些基本的HTML元素可以组合出复杂的元素,HTML服务器控件和基本的HTML元素是对应的。使用Web服务器控件时,从服务器方的角度来看根本不知道最终控件会在浏览器中用什么样的HTML元素显示出来,显示一个Web服务器控件可能需要组合多个HTML元素,也就是说浏览器显示什么样的HTML元素对服务端是透明的。HTML服务器控件提供了操纵浏览器HTML元素的机会。3.2HTML服务器控件

【例】新建一个Web项目,将位置栏中的项目名改为TestHTML。从【工具箱】中的HTML栏内添加一个Button控件,切换到Web窗体的HTML对话框,将会显示aspx文件的内容,如以下代码所示:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="TestHTML._Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><headrunat="server"><title>无标题页</title></head><body><formid="form1"runat="server"><div><inputid="Button1"style="width:110px"type="button"value="button"/></div></form></body></html>3.2HTML服务器控件

该Button控件在aspx文件里直接对应着一个HTML元素,因此会不加处理地直接传给浏览器,其他的HTML控件也与此类似。也可以在服务器端处理HTML服务器控件的事件,不过要先使它们能在服务器端运行。在上面的例子的Web窗体的设计对话框中右击Button控件,从中选择【作为服务器控件运行在Button控件的左上方会出现一个小绿色箭头,它就表明该控件将作为服务器控件运行,这时在aspx文件里对应的行变成:<inputid="Button1"style="width:110px"type="button"value="button"runat="server"/></div>3.2HTML服务器控件

使HTML控件作为服务器控件运行

3.2HTML服务器控件

通过加入runat=“server”使它从简单的HTML元素变成了HTML服务器控件,这样就可以像Web服务器对它进行服务器端编程。在上面的设计对话框中双击Button控件将切换到代码编辑对话框,在Button1_ServerClick方法下填写如下代码:privatevoidButton1_ServerClick(objectsender,System.EventArgse){//改变按钮标签Button1.Value="Click";}运行这个程序,单击Button按钮,页面刷新过后Button按钮的标签就变成了Click。该Button按钮的回发也是由客户端脚本程序产生的,可以使用上面介绍查看浏览器内容的方法来具体看一下实现过程,这些客户端脚本程序是Web服务器处理ASP.NET程序时产生的。现在就面临着如何在Web服务器控件和HTML服务器控件直接选择的问题,这里建议如果偏爱使用RAD编程模型的话最好使用Web服务器控件,如果想更好地控制浏览器的显示,与客户端脚本程序交互,那么就请用HTML服务器控件。web服务器控件HTML服务器控件和HTML控件的区别(1)Html控件最常用,出现最早web服务器控件(ASP

.NET

Server

Control)与WinForm开发相似HTML服务器控件(HTML

Server

Control)向下兼容基于ASP系统的移植而推出的介于以上两者之间的权宜产物web服务器控件HTML服务器控件和HTML控件的区别(2)Html控件的标签<inputid="Button"type="button"value="Button"/>Html服务器控件的标签<inputid="Button"type="button"value="Button"runat="server"/>Html服务器控件其实就是Html控件的基础上加上runat="server"所构成的控件Web服务器控件的标签<asp:ButtonID="Button"runat="server"Text="Button"/>Web服务器控件会根据情况在浏览器端产生一个或多个对应的Html标签web服务器控件HTML服务器控件和HTML控件的区别(3)Html控件不能在服务器端控制,只能在浏览器端通过javascript等脚本语言操作Html服务器控件设定了runat="server"属性后,页面对象会将该控件载入控制器,服务器端的代码就能对其进行控制Html服务器控件在页面执行完毕后会被转换成Html标注,然后当成字符串流发送到浏览器端,浏览器端的脚本能够进行操作。Web服务器控件的操作则是由页面把Form发回服务器,然后完全由服务器端代码处理web服务器控件HTML服务器控件和HTML控件的区别(4)Html控件不能在服务器端控制,只能在浏览器端通过javascript等脚本语言操作Html服务器控件设定了runat="server"属性后,页面对象会将该控件载入控制器,服务器端的代码就能对其进行控制Html服务器控件在页面执行完毕后会被转换成Html标注,然后当成字符串流发送到浏览器端,浏览器端的脚本能够进行操作。Web服务器控件的操作则是由页面把Form发回服务器,然后完全由服务器端代码处理Web服务器控件、Html服务器控件和Html控件的优缺点Html控件和Html服务器控件需要编码以保持浏览器兼容。Web服务器控件能够检测浏览器的兼容性,保持表现的一致

Html服务器控件通过为Html控件添加runat="server"以实现ASP程序的移植。将ASP程序移植成使用Web服务器控件的ASP.Net程序相当于重写新的应用

Html控件和Html服务器控件是标准控件,能够用浏览器端脚本语言操作。使用Web服务器控件提供的对象模型,能够得到和WinForm类似的编程体验,而且无需再学习不同的脚本语言。Web服务器内部的代码并不开放,你无法获得比较直接的控制Web服务器控件、Html服务器控件和Html控件小结Html服务器控件作为一个过渡的实现,虽然能够兼顾浏览器端和服务器端,终究是一个奇怪的存在,尽量少使用为妙从微软的角度,良好封装的Web服务器控件提供了大量的便利,同时WebForm和WinForm开发模式的差异使得相互的经验能够互通,当然是多使用Web服务器控件为好。不过Web服务器控件的缺点是占用服务器资源,页面Postback过多存在的就是合理的,Html还是要会地,Javascript当然是要好好学地,Web开发各种奇奇怪怪的标签共存于Page中的场面短时间内是不可能消失地3.3验证控件

ASP.NET提供了多种验证控件这些验证控件都支持服务器端验证,如果浏览器支持DHTML的话也可提供客户端验证。如果运用得当客户端验证可以有效地减少与服务器端的交互,极大地提高Web应用程序的性能。验证控件通常要认证其他控件的有效性,因而必须和其他控件一起使用,它们都具有一个属性ControlToValidate来指定要验证的控件,这个值是必需的,否则验证控件将会出错3.3验证控件

名称描述RequiredFieldValidator确保用户不会跳过某一项CompareValidator使用比较运算符(小于、等于、大于等)比较用户的输入与一个常量值或另一控件的属性值RegularExpressionValidator检查项与正则表达式定义的模式是否匹配。这种验证类型允许检查可预知的字符序列,如社会保障号、电子邮件地址、电话号码、邮政编码等中的字符序列CustomValidator使用自己编写的验证逻辑检查用户的输入ValidationSummary在一个统一摘要中显示页上所有其他验证控件的错误信息RangeValidator检查用户的输入是否在指定的上下限内。可以检查数字对、字母字符对和日期对的范围。边界可以表示为常数或从其他控件导出的值3.3验证控件-示例【例】打开VisualStudio.NET新建一个Web应用程序项目,命名为Validator。向Web窗体中添加标签控件、输入控件和验证控件。依次放入5个标签控件,设定它们的Text属性分别为“姓名”、“年龄”、“密码”、“确认密码”和“E-mail”。在标签控件之后依次放入5个输入框控件,它们的ID在默认状态下会自动设为TextBox1、TextBox2、TextBox3、TextBox4和TextBox5。设定TextBox3和TextBox4的TextMode属性为Password。在TextBox1、TextBox2、TextBox4和TextBox5控件后分别放入一个RequiredFieldValidator验证控件,分别将这些RequiredFieldValidatork控件的ErrMessage属性设定为“姓名不能为空”、“年龄不能为空”、“密码不能为空”和“E-mail不能为空”,ControlToValidate属性分别设置为TextBox1、TextBox2、TextBox4和TextBox5。TextBox2后再放入一个RangeValidator验证控件其ErrMessage属性设为“值不合法”,ControlToValidate属性设为TextBox2,MaximumValue属性设为100,Minimum属性设为1,Type属性设为Integer。TextBox4后再放入一个CompareValidator控件,它的ErrMessage属性设为“两次输入不一致”,ControlToCompare属性设为TextBox3,ControlToValidtae属性设为TextBox4。Text5后再放一个RegularExpressionValidator控件ErrMessage属性设为“输入不正确”,ControlToValidator属性设为TextBox5,当在属性对话框选择ValidationExpress属性时会弹出【正则表达式编辑器】对话框,从中选择【Internet电子邮件地址】最后向窗体中添加一个Button控件和一个ValidationSummary控件。3.3验证控件-示例RequiredFieldValidator控件保证它所验证控件的输入不能为空RangeValidator控件保证了它所验证控件的输入应在一定的范围内。在本例中保证在TextBox2中输入为1到100之间的整型值。

CompareValidator控件将它验证的控件的内容与另一个控件或另一个值进行比较,在本例中使用了ControlToCompare属性,以此来表明需要与另一控件相比较,默认的比较操作属性Operator的值是Equal(相等),这样该控件的功能其实就是保证两次密码输入相等。RegularExpressionValidator保证控件的输入应满足特定的正则表达式规则,本例指定为“Internet电子邮件地址”,即要求TextBox5中要输入一个电子邮件地址。这些验证控件的EnableClientScript现在都默认为True,这就表明将生成浏览器脚本在客户端进行验证。运行程序,在验证控件对应的文本框中必须正确输入,否则将会在验证控件的位置出现错误信息,在ValidationSummary控件中则会显示出所有这些错误信息CustomValidator控件提供了用户自定义的功能,当上面的验证控件都无法满足要求的时候就需要CustomValidator控件了。它提供了自定义客户端与服务器端验证的功能,它包含有一个ClientValidationFunction属性和ServerValidate事件,可以分别与客户端和服务器端进行绑定,然后编写满足自己需要的验证函数3.3验证控件-验证控件的使用

3.3验证控件-正则表达式编辑器

3.3验证控件-程序的运行3.4用户控件

当ASP.NET提供的控件都无法满足要求的时候就需要自己编写控件了,这些控件叫做用户控件。可以使用两种方式来创建用户控件一种方式是把以前编写的Web页面包装成控件,这样的控件称为Web用户控件另一种方式是从.NET的某个框架类继承一个新类用来生成控件,这样的控件称为Web自定义控件3.4用户控件-Web用户控件先来介绍第一种方式,下面创建一个Web窗体,然后把它转化成Web用户控件的形式,接着再创建一个新的Web窗体来使用这个控件。【例】新建一个ASP.NETWeb应用程序,命名为MyControl,在窗体上放入一个标签控件、一个文本框控件和一个Button控件。双击Button控件将切换到代码编辑对话框,在Button1_Click方法中填写下列代码:privatevoidButton1_Click(objectsender,System.EventArgse){//改变文本标签的内容Label1.Text="Hello"+TextBox1.Text;}切换到Web窗体的HTML代码对话框,将显示出WebForm1.aspx文件的内容。现在依次进行下面步骤,将Web页面转换成Web控件。(1) 从文件中删除<HTML>标签、<!DOCTYPE>标签、<HEAD>标签及内容、<BODY>标签和<FORM>标签。(2) 将文件第一行的Page改为Control并把WebForm1.aspx.cs更名为WebForm1.ascx.cs3.4用户控件-Web用户控件

3.4用户控件-Web用户控件

(3)在解决方案对话框中选中WebForm1.aspx,右击选择【重命名】,将WebForm1.aspx的名字改为WebForm1.ascx,这时文件WebForm1.aspx.cs也会自动更名为WebForm1.ascx.cs。将WebForm1.ascx.cs中的publicclassWebForm1:System.Web.UI.Page一行改为publicclassWebForm1:System.Web.UI.UserControl(4)保存项目,Web用户控件就完成了。这个Web用户控件只实现了很简单的功能。为使一个Web对话框变为控件必须首先将其中的页面元素删除,其次由于Web用户控件的扩展名为ascx,因此也要将aspx扩展名变为ascx,最后Web用户控件应由用户控件类派生。下面用一个新的Web应用程序项目来测试一下刚才生成的Web用户控件。新建一个ASP.NETWeb应用程序,命名为UserControl。在解决方案资源管理器对话框内的UserControl项上右击,选择【添加现有项】,弹出【添加现有项】对话框,文件类型中选择【公用Web文件】,定位到MyControl目录选定WebForm1.ascx,单击【打开】按钮。添加MyControl引用这时就把Web用户控件添加到了UserControl项目中,在解决方案资源管理器内单击WebForm1.ascx,把它拖动到Web对话框中。Web对话框中就会出现刚才新建的Web用户控件由于现在的控件没有设计器的支持,因此在设计对话框中没有显示出Web用户控件的显示界面。执行这个项目,在文本框内输入“maj”,单击按钮,这时标签中就会显示出“Hellomaj”。整个页面的功能其实都是由一个Web用户控件提供的。可以将更复杂的窗体组合在一起做成Web用户控件,使用在项目里以达到代码重用的目的3.4用户控件-添加现有项对话框

3.4用户控件-向窗体中添加Web用户控件3.4用户控件-使用Web用户控件

3.4用户控件-Web自定义控件

Web自定义控件是一种更方便、功能更强大的设置用户控件的方式。它最终将编译成DLL文件,可以方便地进行发布。【例】新建一个项目,在右侧【模板】栏内选择【Web控件库】,将项目名称改为MyCustomControl,单击【确定】按钮。usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.ComponentModel;namespaceMyCustomControl{[DefaultProperty("Text"),ToolboxData("<{0}:WebCustomControl1runat=server></{0}:WebCustomControl1>")]publicclassWebCustomControl1:System.Web.UI.WebControls.WebControl{///<summary>///将此控件呈现给指定的输出参数///</summary>///<paramname="output">要写出到的HTML编写器</param>//输出当前时间protectedoverridevoidRender(HtmlTextWriteroutput){output.Write(DateTime.Now.ToString());}}}3.4用户控件-Web自定义控件

上面的代码实现了一个显示出当前时间的控件。当控件呈现在页面上时会调用Render方法,本例中当前的时间就是在Render方法中输出的。这个控件没有公开任何的属性和事件。保存项目,选择【生成】|【生成MyCustomControl】命令,这将会在该项目对应目录的bin\Debug子目录下生成名为MyCustomControl.dll的文件。这样这个简单的Web自定义控件就生成了。现在演示如何使用这个控件。新建一个ASP.NETWeb应用程序项目,命名为UseCustomControl。下一步要把新建的控件加入到工具箱内,选择【工具】|【选择工具箱】命令单击【浏览】按钮,在弹出的对话框中选定CustomControl项目所在目录,选定文件CustomControl.dll,单击【确定】按钮。这样在Web的工具箱中就会出现一个新的控件。选定该控件并把它添加到窗体上。执行这个项目。在浏览器中显示出了当前的时间。例子虽然简单但是却演示了Web自定义控件的基本生成方法,生成用户自定义控件的过程都是一致的,如果综合运用.NET的类库就可以实现更加复杂的自定义控件。如果想使控件设计时更加美观,可以将System.Design.dll引用到项目里,并从System.Web.UI.Design.ControlDesigner继承一个新类,实现该类的GetDesignTimeHtml方法,并把它加入到自定义控件的属性声明中,这样就可像普通Web服务器控件一样在设计阶段就可以显示出外观3.4用户控件

向工具箱中添加控件

3.4用户控件

添加到工具箱中的用户自定义控件

3.4用户控件

用户自定义控件的使用

4创建Web服务4.1Web服务

4.2一个简单的Web服务

4.3使用Web服务访问数据库4.1Web服务

Web服务提供了一种调用网络应用的新方法,刚一出现就表现出了极大的生命力,它也许会带来网络应用程序的重大变革在Internet的发展中,如何使各种应用系统有效集成一直是一个令人头痛的问题。使用不同技术建立起来的Internet应用系统无法互相通信,彼此的功能无法相互调用,造成了网络资源的极大浪费。虽然CORBA、DCOM/COM+等技术为此进行了极大的努力,但目前仍然无法有效地解决问题,Web服务的出现给我们带来了新的希望Web服务使用基于XML的消息协议SOAP,提供了规范的数据封包格式并且使用HTTP协议传输,从而可以方便地在各种异构的应用系统之间进行通讯。同样基于XML的WSDL用作Web服务的服务描述,它向外公布了Web服务所提供服务的接口。UDDI则提供了Web服务的服务发现机制4.2一个简单的Web服务

下面来创建一个简单的Web服务来演示它的基本组成。【例】VisualStudio.NET为Web服务提供了强大的支持,借助它可以方便地进行Web服务的开发。打开VisualStudio.NET,新建项目,在项目模板中选择【ASP.NETWeb服务】,命名为MyWebService。这时将出现设计对话框,现在切换到代码编辑对话框,按下面的程序改变对话框中的代码。usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;namespaceMyWebService{///Service1的摘要说明///</summary>///4.2一个简单的Web服务

//设定该Web服务的命名空间[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{publicService1(){//CODEGEN:该调用是ASP.NETWeb服务设计器所必需的InitializeComponent();}#regionComponentDesignergeneratedcode//Web服务设计器所必需的privateIContainercomponents=null;///<summary>///设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的资源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.2一个简单的Web服务

#endregion//WEB服务示例//HelloWorld()示例服务返回字符串HelloWorld//若要生成,请取消注释下列行,然后保存并生成项目//若要测试此Web服务,请按F5键//实现两个数相加的Web服务[WebMethod]publicintAdd(intfirstnumber,intsecondnumber){returnfirstnumber+secondnumber;}}}这样就实现了一个简单的Web服务,它只提供了一项功能,计算两个整数的和。现在运行程序来测试这个Web服务。不过要注意Web服务并不是在运行后的浏览器对话框中显示的这样,它本身只是提供给用户的服务,这里看到的只是ASP.NET提供的一个方便的测试界面。4.2一个简单的Web服务

测试Web服务

4.2一个简单的Web服务

在类Service1上加入一行[WebService(Namespace="/")]表明该Web服务的命名空间,它用来和其他Web服务相区别。下面的Add方法上的[WebMethod]表明这是一个Web方法,这个方法的功能很简单,只是将传入的两个数相加并返回结果。上面在浏览器中测试的就是该方法。4.2一个简单的Web服务

测试Add方法

4.2一个简单的Web服务

Web服务调用结果

4.3使用Web服务访问数据库

下面结合使用ADO.NET创建一个可访问数据库的Web服务,同时编写一个客户端程序,用来调用这个Web服务。【例】新建项目,在【模板】中选择【ASP.NETWeb服务】,将该项目命名为MyDataService。usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Services;namespaceMyDataService{///<summary>///Service1的摘要说明///</summary>//指定该Web服务的命名空间[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{publicService1(){//CODEGEN:该调用是ASP.NETWeb服务设计器所必需的InitializeComponent();}4.3使用Web服务访问数据库

#regionComponentDesignergeneratedcode//Web服务设计器所必需的privateIContainercomponents=null;///<summary>///设计器支持所需的方法-不要使用代码编辑器修改此方法的内容///</summary>privatevoidInitializeComponent(){}///<summary>///清理所有正在使用的资源///</summary>protectedoverridevoidDispose(booldisposing){if(disposing&&components!=null){components.Dispose();}base.Dispose(disposing); }4.3使用Web服务访问数据库

#endregion//建立一个sqlConnection连接SQLServer数据库publicSqlConnectionmyConn=newSqlConnection("DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind");[WebMethod]publicDataSetGetDataSet(){//建立一个sqlDataAdapter取得products表内容Sql

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论