第15章ASP-NET编程ppt课件(全).ppt

上传人:可**** 文档编号:77376336 上传时间:2023-03-14 格式:PPT 页数:77 大小:6.54MB
返回 下载 相关 举报
第15章ASP-NET编程ppt课件(全).ppt_第1页
第1页 / 共77页
第15章ASP-NET编程ppt课件(全).ppt_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《第15章ASP-NET编程ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《第15章ASP-NET编程ppt课件(全).ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第15章 ASP.NET编程15.1 ASP.NET技术简介 15.1.1 ASP.NET的新特点 15.1.2 ASP.NET中的常用组件 15.1.3 ASP.NET Web Application程序举例15.2 ASP.NET WebServices简介 15.2.1 ASP.NET Web Srvices简介 15.2.2 创建ASP.NET Web Services 15.2.3 访问ASP.NET Web Services15.3 小结15.4 习题ASP.NET不仅仅是ASP的下一个版本。它是为开发者创建企业级WEB应用提供必要服务的一个统一的平台。尽管在语法上它是ASP的超集

2、,但它同时也提供了更安全的全新编程模式,开发人员会感觉到添加ASP.Net的新特性到已存在的ASP应用程序中是很简单的事情。ASP.NET是编译执行,基于.NET环境的;可以使用任何支持.NET的语言来编写应用程序,包括Visual Basic.NET、C#、JScript.NET。同时、.NET Framework对于任何ASP.NET应用程序都是有效的。开发者可以很容易的从这些技术中受益,比如管理CLR环境,安全类型、继承等等。15.1 ASP.NET技术简介ASP.NET建立在MicroSoft平台架构之上,利用通用语言运行时库(CLR:Common Language Runtime)在

3、服务器端为用户提供建立强大的企业级Web应用服务的开发框架。ASP.NET是一种使用.NET Framework开发Web应用程序的一种编程模式。Delphi 2005不仅支持.NET Framework内部的数据访问组件,还包含了一组DB Web Controls组件。DB Web Controls可以与.NET Framework的数据提供器以及BDP.NET(Borland Data Providers for.NET)配合以进行Web应用开发。本节将介绍使用Delphi2005开发ASP.NET应用程序的基本概念。15.1.1 ASP.NET的新特点ASP.NET主要具有以下四个新特点

4、:1全新架构2编译执行3数据缓存技术4易于使用ADO.NET15.1.2 ASP.NET中的常用组件 当创建一个ASP.NET Web应用程序后,Delphi2005会显示一个Web Form用来开发Web页面。在Delphi 2005中,可以通过拖放组件到Web Form上来设计Web页面,就像设计传统的Windows窗体应用程序的窗体界面一样。同样可以使用对象监视器来设置组件属性,用代码编辑器来编写事件处理程序代码。通过Web Form创建的Web页,通过相应的校验组件可以在用户输入数据时进行检验,而不是当数据传送到服务器端才由脚本进行。ASP.NET使用服务器端组件,组件放在客户端的HT

5、ML页面上,在服务器端执行,为用户提供功功能,以HTML形式将结果返回给用户。用户和服务器端的交互就是通过这些组件实现。一 组件分类简介用于开发Web Form的组件有5种类型,简介如下:1.HTML组件:组件在设计Web Form时,可以用HTML类组件构成HTML元素。在这些组件中设置特性Run at=“Server”,这样允许ASP.NET在服务器端处理组件的各种属性。这类组件放在组件面板的HTML Elements页上。2.Web服务器组件:Web服务器组件与HTML组件类似,大多数情况下可以用来替代HTML组件,但通常功能更强。它们不被映射为HTML元素,是由ASP.NET类派生而来

6、。这类组件需要添加Run at=“Server”特性。这类组件放在组件面板的Web Controls页上。3.校验组件:校验组件是运行时不可见的组件,用来对用户的输入过行检验。这类组件有5个,可以用来校验从项目是否存在到项目的确切格式等任何内容。当标准的校验组件不能满足需要时,也可以在客户端或服务器端定制校验。这五个组件放在组件面板的Web Controls页上。4.用户组件:用户组件实际上也是一种服务器控年。当标准Web服务器组件不能满足需要时,用户也可以自己开发服务器组件或者引用第三方提供的特定功能的组件。5.数据绑定组件:数据绑定组件也是服务器端组件。这些组件通常会有属性去持从数据源提取

7、并显示数据的功能。这类组件在组件面板的DB Web页上。二 组件举例Delphi2005中提供的很多用与设计Web窗体的组件与传统的用与设计Windows窗体的组件功能与用法都极为类似,例如按钮(Button)、标签(Label)、图像组件(Image)、复选框(CheckBox)、单选按钮(RadioButton)、列表框(ListBox)等等,这里不再一一介绍。在此主要介绍Web应用开发中特有的组件。1.创建超级链接的HyperLink组件。HyperLink组件用于在Web页面上创建一个超级链接,以便链接到另一个页面。该组件的主要属性有以下几个:1)Text属性:通过指定该属性来创建一个

8、文本类型的超级链接。该属性值即为超级链接所显示的文本提示信息。例15-1新建一个ASP.NET Web Application,在Web Form上添加一个HyperLink1组件,设置其Text属性值为“sohu”,则效果如图15-1:图15-1 设置文字超链接 2)ImageUrl属性:通过指定该属性来创建一个图片超级链接。该属性值指定的图片将显示在Web页面上,用户单击该图片则链接到指定的页面。如果同时设定了Text属性和ImageUrl属性,在运行时将显示ImageUrl属性指定的图片,如果图片无效,才会显示Text属性指定的文本。在支持提示功能的浏览器中,当鼠标指向该图片时,会显示T

9、ext属性指定的文本作为提示。指定例15-1中HyperLink1组件的ImageUrl属性,则效果如图15-2。图15-2设置超链接图片3)NavigateUrl属性:该属性是HyperLink组件最为重要的属性,用来指定当用户单击该超级链接后,转向的页面地址。例如,例15-1中设置HyperLink1的NavigateUrl属性为:,则用户点击该链接将转到搜狐主页。2.AdRotator组件动态网页可以使用AdRotator组件在网页的顶端实现一些横幅。这些横幅在用户当前次的访问到用户的下一次访问时要进行一些改变。该组件最重要的属性是AdvertisementFile。使用时,需要把一个X

10、ML文件赋值给该属性。在XML文件里要定义横幅显示的内容。在例15-1 Web页面上添加一个AdRotator1组件,指定其AdvertisementFile属性值为ad.xml。ad.xml文件的内容如下:1.gif http:/ Mobile Controls 2.gif http:/ Microsoft 保存文件,运行程序,结果如下图15-3,刷新页面,结果如下图15-4:图15-3 图15-4广告组件运行效果3.RequiredFieldValidator组件在Web页面上需要用户输入信息时,有时一个或多个字段的值用户必须指定,这时就需要用到RequiredFieldValidator

11、组件。该组件可以指定检查某个字段的值是否为空,如果用户没为指定的非空字段指定值,则该组件显示预定义的错误提示信息。该组件主要属性有以下几个:1)ControlToValidate属性:该属性指定要进行输入检验的输入组件,默认值是String.Empty。使用时必须给该属性指定一个与该组件在同一个Web页面内的输入组件ID,否则将引发异常。可以进行输入校验的输入组件如TextBox、ListBox、DropDownList、RadioButtonList、System.Web.UI.HtmlControls.HtmlInputText、System.Web.UI.HtmlControls.Htm

12、lInputFile、System.Web.UI.HtmlControls.HtmlSelect和 System.Web.UI.HtmlControls.HtmlTextArea等。2)ErrorMessage属性:该属性用来读取或指定当输入校验失败时,Web页面显示的错误提示信息。但是如果设置了Text属性值,则Text属性值将覆盖本属性的设置,即当校验失败时,页面上显示的提示信息是Text的属性值。3)EnableClientScript属性:该属性用来获取或设置是否允许客户端执行输入合法性检验(需浏览器支持)。默认值为True,表示允许在客户端进行输入合法性检查,False则表示不允许。

13、虽然校验组件总是在服务器端执行输入合法性检验,但为了使DHTML能够支持浏览器在客户端进行的输入合法性检验,它们也有完整的客户端实现。这样就可以将用户输入的数据在发送到服务器之前在客户端进行合法性检验,也就可以在窗体被提交之前在客户端进行输入数据不合法的错误处理操作以避免不必要的数据循环传递的处理过程。默认情况下允许客户端的输入合法性检验,必要时可以改变这一设置,比如想在执行数据合法性检验之前执行一些服务代码等。4)Display属性:该属性用来指定校验错误提示信息显示的样式。其可能的取值及意义见表15-1,默认值是static。表15-1 Display属性可能取值及意义需要注意的是,错误信

14、息的显示样式还依赖于客户端的输入合法性检验是否启用。如果客户端的输入合法性检验无效(可能因为浏览器不支持、或是直接使用Page.ClientTarget页或EnableClientScript属性使之失效等原因),则Dynamic和Static显示的样式是一样的。也就是说,Dynamic样式仅当客户端输入合法性检验启用时才起作用。5)IsValid属性:该属性用来获以或指定输入组件的输入合法性检验是否通过。默认值是True,表示检验通过,否则为False。注意,因为该属性的默认值为True,所以如果在真正的输入校验执行之前访问该属性,将会得到True的值,但这并不表示输入的数据是合法的。事实上

15、,只有Validate方法被调用后,该属性才能得到正确的评估值。可以手工调用Validate方法,或调用页面的Page.Validate方法,也可以设置按钮组件的CausesValidation属性值为True来执行合法性检验。另外,当合法性检验执行后,必要时也可以手工的修改该属性值来改变验证的结果。例15-2:新建一个ASP.NET Web Application,在Web Form上放置三个Label、三个TextBox,两个Button,相关设置见图15-5。再添加一个RequiredFieldValidator组件。设置其ControlToValidate属性为TextBox1、Err

16、orMessage属性为“16个字符以内,支持中文,必填”。最后设置Button1的CausesValidation属性为True。运行程序,不输入任何数据,单击“确定”按钮,运行结果如图15-5所示。图15-5 范围校验组件运行效果4.RangeValidator组件在Web页面中需要用户输入信息时,有些情况希望用户输入的数据在某一个范围内,这时候可以使用RangeValidator组件来进行验证用户输入的数据是否合法。该主件的用法与ReguiredFieldValidator类似,除了前面ReguiredFieldValidator中介绍的那些属性外,还有几个属性非常重要。1)Maximu

17、mValue和MinimumValue:很明显,这两个属性用来指定用于校验的合法的输入数据范围。2)Type属性:该属性用来指定用于进行数据校验的数据类型。对于不同的校验组件,使用该属性的方法不尽相同。对于RangeValidator组件来说,执行校验时,将输入组件中用户输入的数据和MaximumValue以及MinimumValue的属性值都转换为Type属性指定的数据类型。如果输入的数据不能转换为指定类型,则校验返回失败的结果,即IsValid属性被设置为False。如果使用的是CompareValidator组件,而且设置其Operator属性为ValidationCompareOper

18、ator.DataTypeCheck时,只有要校验的输入组件中用户输入的值会被转换为指定类型。可选的数据类型及描述如表15-2:表15-2 可选的数据类型及意义在例15-2中,添加一个RangeValidator1组件,设置其ControlToValidate属性为TextBox3,ErrorMessage属性为“输入数据必须在18-25之间”,MaximumValue和MinimumValuen属性值为别为25和18,Type属性设为Integer,运行程序查看结果如图15-5。5.CompareValidator组件当在Web应用程序中,需要检验用户输入的数据是否等于、小于或大于某一特定数

19、据时,可以使用CompareValidator组件。除了前面介绍过的一些校验组件都具有的属性外,该组件还有几个属性需要了解。(1)ControlToCompare属性该属性读取或指定一个输入组件,用其中的数据和ControlToValidate属性指定的输入组件中用户输入的值进行比较操作。例如要求用户设置密码时,验证两次输入的密码是否一致时,可以使用这个功能。如果Web页面上并不存在该属性指定的输入组件则会引发一个异常。(2)ValueToCompare属性该属性读取或指定一个常量值,用来与ControlToValidate属性指定的输入组件中用户输入的值进行比较操作。但是如果该常量值不能转换

20、为Type属性指定的数据类型,则会引会一个异常。明显地,分别使用以上两个属性,可以进行两个输入组件中的值的比较或者是一个输入组件中的数据与一个常量的比较,但不要在程序中同时设置ControlToCompare属性和ValueToCompare属性。如果同时设置这两个属性,则ControlToCompare属性具有优先权。(3)Operator属性 该属性用于读取或设置要执行的比较操作。可选取值及意义见表15-3:表15-3 可选的比较类型及所做操作取值取值执行的操作执行的操作Equal 比较是否相等NotEqual 比较是否不相等GreaterThan 比较要校验的组件中值是否大于指定组件中值

21、或常量值GreaterThanEqual比较要校验的组件中值是否大于等于指定组件中值或常量值LessThan比较要校验的组件中值是否小于指定组件中值或常量值LessThanEqual比较要校验的组件中值是否小于等于指定组件中值或常量值DataTypeCheck 检查被校验组件中值的数据类型是否与Type属性指定的一致。如果该值不能转换为指定的数据类型,则校验结果为False。如果取该值,则ControlToComparet和ValueToCompare属性的设置将被忽略。例15-3:新建一个ASP.NET Web Application,拖放三个Label组件、三个TextBox组件,两个Bu

22、tton组件,三个RequiredFieldValidator,一个CompareValidator,其相关属性设置如下:运行结果如图15-7。6.RegularExpressionValidator组件在Web应用程序中,有时需要验证用户输入的数据格式是否正确,比如日期、电话号码等。在Delphi2005中可以使用RegularExpressionValidator组件实现该功能。除了前面介绍的属性外,该组件还有一个重要属性:ValidationExpression。该属性的作用就是获取或定义用于检查用户输入数据格式是否式确的正则表达式。选中该组年,在Object Inspector中单击该

23、属性值输入框边的按钮,弹出预置校验表达式选择对话框,可以选择的法国、德国、日本、美国等国家的邮政编码、电话号码;互联网网址、电子邮件地址等格式的表达式,如图15-6:图15-6 选择预置的校验表达式用户可以自定义表达式格式。下面代码定义校验表达式为五位数字:将该组件添加到例15-3中,运行程序,结果如图15-7:图15-7 比较校验组件运行结果7.CustomValidator组件除了以上执行某一特定校验的组件外,用户还可以使用CustomValidator组件自己定义校验的内容。可以通过响应该组件的ServerValidate事件,在服务器端进行事件处理过程中定义的校验过程。被验证的输入组件

24、的字符串可以通过访问该事件的args(System.Web.UI.WebControls.ServerValidateEventArgs)参数的Value属性获取。同样,验证的结果返回给args参数的IsValid属性。也可以通过该组件的ClientValidationFunction属性,指定一个客户端验证过程,在客户端由浏览器执行指定的验证过程。要使用客户端校验功能,必须首先定义ServerValidate的事件处理过程申明,然后添加一个客户端校验过程,再将该过程名设置为ClientValidationFunction属性的值。因为该过程是在客户端执行,所以必须使用目标浏览器支持的脚本语言

25、编写。与服务器端验证事件类似,这种情况下,可以通过该过程的arguments参数的Value属性获取要检验的输入组件中用户输入的字段串,而检验结果存在该参数的IsValid属性中。要注意的是,如果使用了客户端验证过程,则要保证该过程也包含了服务器端验证事件的功能,否则可能会被恶意代码利用以绕过服务器端的合法性检查。可以对同一个输入组件执行不同标准的多重合法性检验,比如对于一个输入框,可以检查它的值在某一个范围,同时要求它的值是必填字段。需要注意的是,如果输入组件值为空时,除RequiredFeildValidator组件外,其它的合法性验证组件不会执行验证操作,而这时返回值是默认的True。所

26、以,通常应该对需要进行合法性验证的组件,不管要执什么样的验证,都要使用RequiredFeildValidator组件防止用户跳过该输入组件。15.1.3 ASP.NET Web Application程序举例在Delphi2005中利用Web Form和ASP.NET的组件构造ASP.NET Web应用程序非常简便,本节给出一个完整示例15-4,来演示如何创建一个ASP.NET Web应用程序。步骤如下:1.创建一个ASP.NET Web应用程序启动Delphi2005,选择File|New|ASP.NET Web Application-Delphi for.NET,如图15-8 所示:图

27、15-8 新建Web应用2.弹出New ASP.NET Web Application对话框,如图15-9所示。在Name输入框里输出ASP.NET Web应用程序名称,在Location输入框中指定工程保存路径,默认为所选Web服务器默认的路径,在Server下拉列表框中选择选用的Web服务器,本例选用Cassini Web Server。图15-9 设置工程属性3.设置完成后点击“OK”按钮,Delphi2005创建一个空白的ASP.NET Web应用程序,显示一个Web Form网格页面,如图15-10所示。可以使用上半部分的工具对页面的静态文本、图片、超级链接等进行设置,Delphi

28、2005自动生成其HTML代码。可以点击下边的.aspx标签页查看页面的HTML代码(如图15-11所示),单击.Pas标签页查看后台代码,如图15-12所示:图15-10 空白Web页面图15-11 HTML代码文件 图15-12 代码编辑窗口4.拖动组件到Web Form,设置相关属性。本例中,从组件面板的Web Controls页上拖动一个Button组件,设置其Text属性为“确定”,再拖动一个label组件,一个textbox组件,图15-13所示:图15-13 程序界面设计 5.根据需要,添加对象事件处理过程。可以象在开发传统的Windows窗体应用程序一样,为组件添加事件处理过程

29、。双击Button组件,添加Button的单击事件处理过程,在代码编辑窗口的相应位置写如下代码:if textbox1.Text then label1.Text:=textbox1.Text;6.保存工程,运行。运行程序,在浏览器中显示的页面中,输入“这是一个示例”,如图15-14所示,并按下“确定”按钮,结果如图15-15所示:图15-14 图15-15运行结果15.2 ASP.NET WebServices简介Web Srvices是当前一种很热门的开发技术,它在一个分布式的环境中实现应用的动态描述、发布和调用。它代表着Internet技术的重要发展。目前,Web Srvices已经在电

30、信、金融、交通、制造、零售、软件、能源、电子政务等领域得到广泛应用。本节首先简单介绍ASP.NET Web Srvices,然后用实例介绍如何创建和调用ASP.NET Web Srvices应用。15.2.1 ASP.NET Web Srvices简介Web Services是一套集成的基于互联网的,充许应用程序间不依赖任何平台和语言而进行连接和信息交换的统一标准。它与.NET Framework中ASP.NET的应用模式紧密结合。与传统的windows本地应用程序不同,Web Services包含的对象和方法都显露在Web所使用的简单消息协议栈之外。任何客户端均可通过HTTP协议使用WebM

31、ethod方法调用Web Services应用。就像任何可以经由windows窗体应用程序访问的方法一样,一个WebMethod方法提供一些已经定义好的功能。然而,和其它类型的方法不同的是,WebMethod方法要经由Web浏览器调用。要获得关于Web Services更多的信息,请参考Microsoft.NET Framework SDK 文档。Borland提供了一系列的工具,采用多样化的技术来开发和调用ASP.NET Web Services应用。由于对象模块化,因此Web Services可以很方便的实现代码重用,甚至不需要添加任何附加代码。图15-16表示Web Services的体

32、系结构:图15-16 Web Services的体系结构15.2.2 创建ASP.NET Web Services本节将以创建一个简单的Hello World Web Services应用为例,介绍如何创建Web Services应用。需要注意的是,目前只能使用后台代码模式在Delphi2005中创建ASP.NET WebServices应用而不能使用内联模式。例15-5 创建Web Services应用主要有以下三个步骤:1.创建ASP.NET WebServices应用。2.创建WebMethod。3.测试并运行ASP.NET WebServices应用。一创建ASP.NET WebSer

33、vices应用1.在Delphi2005的开发环境中选择File|New|Other菜单命令,打开New Items对话框,从中单击Delphi for.Net Projects结点,如图15-17所示:图15-17 创建ASP.NET WebServices应用2.在窗体右边列表中选择ASP.NET WebServices Application,单击“OK”按钮,打开New ASP.NET WebServices Application对话框,如图15-18所示:图15-18 设置工程属性New ASP.NET Web Service Application对话框用于设置Web Servi

34、ce Application的位置和名称。在Name文本编辑框中输入新建的Web ServiceApplication的名称,在Location文本编辑框中输入存存储的路径,默认情况下会存储在Web服务器的根目录下。Server下拉列表框提供了可供选择的Web服务器的列表,通常使用IIS或Cassini。点击View Server Options按钮可以打开查看当前所选Web服务器配置信息的对话框。选择的服务器不同,则对话框所显示的内容也不同。这里为方便使用Cassini服务器。注:Cassini是一个示例服务器,专门为MicroSoft NET FrameWork开发的,关于Cassini

35、Web服务器的下载、安装及使用等相关信息,请读者访问Cassini的网站:。在Delphi2005的安装目录的Demos子目录中有一个未编译的Cassini源代码。3.单击“OK”按钮,创建一个空白的Web Service,如图15-19所示:一个空白的Web Service通常由三个文件构成:Global.asax文件、Web.config文件、页面文件asmx。图15-19空白的Web Service工程 4.单击“Run”运行,界面如图15-20所图15-20 空白的Web Service工程运行结果二 创建WebMethod 1.在代码编辑器的底部选择WebService.pas 或

36、WebService.asmx.cs页。如果在上一步给新建的Web Service Application重新命名而不是采用默认名字,这时将显示的是上一步填写的工程名。在创建该工程时,已经包含了一个示例“Hello World!”的WebMethod,但是代码被注释掉了。2.取消对示例“Hello World!”WebMethod的注释。如果使用的是Delphifor.Net工程,则在接口和实现部分都需要取消注释,如果是C#Web Service Application则只有一处需取消注释。如图15-21、图15-22所示:图15-21 图15-22要取消注释的部分 3.运行工程,界面如图15

37、-23所示:图15-23 取消注释后的运行结果三 测试Web Service应用 打开浏览器,在地址栏输入http:/localhost/WebService1/WebService1.asmx并回车,查看执行结果。15.2.3 访问ASP.NET Web ServicesWeb Services创建后就可以在Web应用或传统的Windows窗体应用程序中进行访问,以实现代码重用。要访问Web Services,需要创建一个客户端程序,然后添加一个Web引用,最后编写调用Web Services功能的代码。下面将以一个实例介绍如何在应用程序中访问已创建的Web Services。一 创建客户端

38、应用程序 运行Delphi2005,选择File|New|Other,打开New Items对话框,在这里选择要创建的客户端应用程序的类型,比如ASP.NET Web Application或Windows Forms Application。这里以Windows Forms Application为例,单击“OK”按钮创建一个新的工程。二 添加Web引用 1.选择菜单Project|Add Web Reference,打开Add Web Reference对话框。如图15-24所示:图15-24 添加Web上用对话框 2.输入上一节创建的“Hello World!”Web Services地

39、址:http:/localhost:8080/WebService1.asmx,按回车键确定输入,打开该Web Services服务,结果如图15-25所示:图15-25 添加Web服务注:做这一步之前,应先运行Cassini Personal Web Server或IIS,并启动上次创建的Web Services服务。3.在右下边的输入框中指定Web引用名称,单击“Add Reference”,添加Web引用到客户端应用。这时可以在工程管理器中查看到该引用。如图15-26所示。图15-26 添加后情况三 编写调用代码 1.在WinForm中添加一个按钮组件,双击该按钮添加其单击事件处理过程,

40、代码如下:procedure TWinForm.Button1_Click(sender:System.Object;e:System.EventArgs);var webser:TWebService1;begin webser:=TWebService1.Create;button1.Text:=webser.HelloWorld();end;注意:要将localhost.WebService1添到代码文件的单元引用列表中,否则编译时会提示TWebService1未定义。2.编译运行程序,界面如图15-27,单击按钮后结果如图15-28所示:图15-27图15-28运行结果15.3 小结 本章首先详细介绍了Delphi2005中常用的ASP.NET应用组件,然后以具体的实例演示如何利用Delphi2005创建Web应用和Web服务。通过 章学习,学生应该掌握Delphi2005中进行Web应用开发的一般方法和技巧。15.4 习题1.下载并安装、设置Cassini。2.在IIS下创建并管理站点、设置虚拟目录。3.创建一个用于用户登陆的Web应用,要求进行输入检验。4.创建一个Web服务,向客户端提供两个数的加、减、乘、除运算功能。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁