1  /  1  页   1 跳转 查看:809

ASP.NET讲座(1)-ASP.NET简介

ASP.NET讲座(1)-ASP.NET简介

从今天开始起,基督山将和大家一起进入ASP.net 诸多程序的学习中,老实说,.net到底是法宝还是垃圾,我们拭目以待。有任何问题,联络基督山 seaman@163.com
什么是ASP.net,ASP.net的安装
  1.1 什么是ASP.net

  ASP.net 是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的的优势。

  执行效率的大幅提高

  ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。

  世界级的工具支持
ASP.net构架是可以用Microsoft(R)公司最新的产品 Visual Studio.net开发环境进行开发,WYSIWYG(What You See Is What You Get所见即为所得)的编辑。这些仅是ASP.net强大化软件支持的一小部分。

  强大性和适应性

  因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net。

  简单性和易学性

  ASP.net是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如ASP.net页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面。另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。

  高效可管理性

  ASP.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为"Zero Local Administration"的哲学观念使Asp.net的基于应用的开发更加具体,和快捷。一个ASP.net的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。

  多处理器环境的可靠性

  ASP.net已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的ASP.net应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。

  自定义性,和可扩展性

  ASP.net设计时考虑了让网站开发人员可以在自己的代码中自己定义"plug-in"的模块。这与原来的包含关系不同,ASP.net可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。

  安全性

  基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。(但是Asp的经验告诉我们,不能这么自信,M$老是会出Bug的)

  1.2 本篇教程的主要内容

  ASP.net 的语法

  ASP.net 的语法有可能对老的ASP程序员来说很熟悉,但也有一些是全新的东西,QuickStart教程将在细节上全部谈到它们。

  ASP.net 的结构和特征

  介绍ASP.net的所有特性,是ASP开发者可以编写交互性的世界级的应用软件,用比以前少的多时间和精力。

  最佳话的练习

  引用了一些练习题和如何回避在程序开发中潜在地容易犯的错误的方法,是开发更加顺利。

  为那些人编写的

  如果你从来没有开发过网站程序,那么这不适合你,你应该至少掌握一些HTML语言和简单的Web开发术语。你不需要先前的ASP开发经验(当然有经验更好),但是你必须了解交互式Web程序开发的概念,包含窗体,脚本,和数据接口的概念。

  1.3 安装 ASP.net

  跟基督山一起检查你们的计算机哦

  CPU Pentium II 450以上,推荐733

  内存 256M 推荐 512M

  硬盘空间 1G 或者更多

  操作系统 Windows 2000 Pro Server AD Server 都可以,并安装 IIS 5 和 Windows 2000 SP1

  但基督山的机器配置 C266 超 333 内存 128M 硬盘 2G 还是安装成功了。

  检查一下大家是不是都用IE 5.5 了?

  我们还需要 MDAC(ADO)2.6以上版本(可以在微软网站下面下载。)

  最后,就是我们讲座的主角 Microsoft .Net Framework SDK 诶,在http://msdn.microsoft.com/net下可以下载,绝对地址在:http://download.microsoft.com/download/VisualStudioNET/Install/2204/NT5/EN-US/setup.exe 111M ,还好带宽不小ADSL的朋友可以达到全速(如果down不了的朋友,基督山可以帮着刻一张光盘,包括MDAC iIE5.5 SP1,.net SDK。)

  注意:教育网络上的朋友么,呵呵,在北京科技大学的服务器上面,有完整的文件可以下载,速度还不错,地址是:ftp://bbs.ustb.edu.cn/incoming/newsoft

  终于down完了,运行安装程序,.net安装到你的计算机里面去。

  1.4 安装 .NET Framework 的快速入门示例

  打开 SDK Overview 链接 (.NET Framework SDK Overview),该链接已在 SDK 安装过程中添加至您的桌面。

  HTML 页面打开后,单击 .NET Framework Samples 链接。

  按照安装步骤来安装示例。

  安装完成后,您可以在 http://localhost/quickstart/default.htm 访问示例。

  最后,在浏览默认文档时,您可以选择页面顶端的 ASP.NET 链接。此链接包含了 ASP.NET 示例的列表。这个教程是目前国际上面唯一的完全教程,也是Microsoft提供给我们学习ASP.net的唯一教程,可惜是全英文的,ASP.net的先行者,全靠它了。

  1.5 学习ASP.net 的过程中如何求助--加入 ASPNG 讨论列表

   Charles Carroll 作为不断壮大的 ASP.NET 社团的领导者之一,一直尽心尽力地主持着基于电子邮件的 ASP.NET 讨论列表。事实上,从七月初专业开发人员会议 (PDC) 的第一天开始,这个讨论列表就一直存。/在。

  此讨论列表是学习和发布日益丰富的 ASP.NET 开发人员知识的最佳选择。Charles 会检查和筛选所有的消息,确保发布的文章都与此列表相关,从而使讨论不脱离主题。

  除了社区方面的列表以外,Microsoft .NET Framework 小组还定期参加讨论并发布示例代码。最近一次是 Scott Guthrie 发布了一个动态生成图像的 ASP.NET 示例。

  要加入讨论列表,只需访问 http://www.asplists.com/asplists/aspng.asp (英文)。在此页面上,您可以找到与 ASP.NET 相关的不同主题的电子邮件讨论列表的完整列表。最活跃的列表是 ASPNGBeta,我们推荐您加入这个列表。请从列表中选择 ASPNGBeta。您也可以直接访问 http://www.asplists.com/asplists/aspngbeta.asp (英文),选择所需的接收电子邮件分发的选项。

  1.6 完整的.NET 解决方案演示

  IBuySpy Microsoft ASP.NET 示例应用程序

  IBuySpy(英文)是功能全面的电子商务应用程序,它详细介绍了如何使用 ASP.NET 创建高性能、可伸缩的 Web 应用程序。您可以联机浏览示例应用程序(包括完整的源代码和文档),也可以下载完整的 C# 或 Visual Basic.NET 版本的应用程序。

  http://www.ibuyspy.com/

  1.7 免费的.net空间

  Brinkster Inc.(英文)是最大的免费 ASP Web 主机服务提供商,它提供免费 ASP.NET 主机服务。加入的每个成员可获得 5 MB 空间用于测试和学习 ASP.NET。用于测试和学习的成员身份,给开发人员提供了了解这项新技术的机会。Brinkster 提供免费 ASP 主机服务已经有一年多的时间,在 ASP/ASP.NET 主机服务市场处于领先地位。

  http://www.brinkster.com/ (速度不是很理想)

  1.8 国外相关的技术支持网站

  http://www.aspfree.com (英文)是比较全面的 ASP.NET 社区站点之一,由 Steve Schofield 管理。您可以在这里找到十多篇关于 ASP.NET 的文章,以及联机的 ASP.NET 快速入门示例。如果您不能安装 NET.SDK,这是您学习 ASP.NET 的不错的选择。作为奖励,您还可以得到 Wrox Press 出版的 A Preview of ASP.NET 第 1 章的联机版本。

  http://www.aspng.com (英文)是另外一个比较全面的 ASP.NET 相关站点。ASPNG 包括至以下内容的链接:Charles Carroll 上载的 ASP.NET 类和 Stephen Walther 上载的 ASP.NET Workshop。最后,ASPNG 还包括一个比较活跃的电子邮件讨论列表。相关信息请参见 http://www.asplists.com (英文)。

  http://www.ASP101.com (英文)几篇 ASP.NET 相关文章,以及按线索组织的、基于 Web 讨论的 ASP.NET 论坛。

  http://www.asptoday.com (英文)Wrox Press 的联机杂志已经有 10 篇关于 ASP.NET 的文章,范围从 ADO+ 到生成服务器控件。

  http://www.4guysfromrolla.com (英文)4GuysFromRolla 包括一些文章和其他相关资源。文章内容涉及 ADO+ 和 ASP.NET 本身的概述。

  http://www.devx.com (英文)最后,devx.com 包含比较全面的 ASP.NET 列表和可用的 .NET 相关资源。从书籍、Web 站点到活动,您都可以在这里找到感兴趣的东西。
 

re:ASP.NET讲座(2)-ASP.NET...

ASP.NET讲座(2)-ASP.NET控件

2.1 ASP.net 入门
  通常谈一个学科,我们老是说,它入门很简单的嘛,ASP.net也是。ASP.net提出一个概念,就是认为WEB页面,也是一个窗体,所以,学习过面向对象编程的VB VC BC Dephi的朋友,学起来就简单多了。

  一个ASP.net页面的后缀名是".aspx",所以,IIS在你安装完ASP.net时,也会把Default.aspx作为你的默认首页,网管朋友一定要注意了。

  ASP.net 是后天编译运行的,只是在第一次运行时编译,所以,以后的运行速度比ASP执行快。

  2.2 写自己第一个ASP.net的程序

  激动吗?很快就开始写第一个程序了,一般学任何语言都要Hello World!一下吧,那我们也来。
在这之前写要说一下,ASP.net的程序可以用任何东西写,甚至是Windows的记事本,当初基督山也很疑惑,要不要用 V Interdev .net 来编写啊,事实证明,那玩意没手写好用。

  <%@ Page Language="VB"%> '说明一下你使用的哪一种语言来写.net的,如果是VB的话,这行可以不写。

<%Reponse.Write ("Hello World")%>

  命名 myfirstasp_net.aspx 来我们运行一下,果然,Hello World!

  注意,Response.Write 语句,我们原来写成 Response.Write "Hello World!"也是正确的,但在.net中,必须用"("和")"。

  2.3 HTML 控件

  ASP.net 框架中的第一组控件称为 HTML 控件。这些控件位于 System.Web.UI.HtmlControls 命名空间中,是从 HtmlControl 基类中直接或间接派生出来的。图 1 说明了 HTML 控件的类层次结构。


图 1. ASP+ HTML 控件

  几乎所有对于任何包含 runat="server" 属性的标记,都会为其生成 HTML 控件。例如,下面的 HTML 可创建一个名为"textBox1"的 HtmlInputText 控件的实例:

<input type="text" runat="server" id="textBox1" value="some text">

  下表中列出了 HTML 控件以及对应的 HTML 标记。

控件 对应的标记
HtmlAnchor <a>
HtmlButton <button>
HtmlSelect  <select>
HtmlTextArea <textarea>
HtmlInputButton <input type="button">
HtmlInputCheckBox <input type="check">
HtmlInputRadioButton <input type="radio">
HtmlInputText <input type="text"> 和 <input type="password">
HtmlInputHidden <input type="hidden">
HtmlInputImage <input type="image">
HtmlInputFile <input type="file">
HtmlForm <form>
HtmlImage <img>
HtmlTable <table>
HtmlTableRow <tr>
HtmlTableCell <td>
HtmlGenericControl 任何其它没有对应控件的标记,如 <span>、<div> 等
  
对于现有的ASP程序,如果向ASP.net移植,毫无疑问HTML控件将发挥最大的作用。

  2.4 Web 控件

  ASP.net 框架中的第二组服务器控件称为 Web 控件。这些控件位于 System.Web.UI.WebControls 命名空间中,是从 WebControl 基类中直接或间接派生出来的。图 2 说明了 Web 控件的类层次结构。

  Web 控件中包括传统的表单控件,如 TextBox 和 Button ,以及其它更高抽象级别的控件,如 Calendar 和 DataGrid 控件。它们提供了一些能够简化开发工作的特性,其中包括:

  丰富而一致的对象模型:WebControl 基类实现了对所有控件通用的大量属性,这些属性包括 ForeColor、BackColor、Font、Enabled 等。属性和方法的名称是经过精心挑选的,以提高在整个框架和该组控件中的一致性。通过这些组件实现的具有明确类型的对象模型将有助于减少编程错误。

  对浏览器的自动检测:Web 控件能够自动检测客户机浏览器的功能,并相应地调整它们所提交的 HTML,从而充分发挥浏览器的功能。

  数据绑定:在 Web 窗体页面中,可以对控件的任何属性进行数据绑定。此外,还有几种 Web 控件可以用来提交数据源的内容。

  在 HTML 标记中,Web 控件会表示为具有命名空间的标记,即带有前缀的标记。前缀用于将标记映射到运行时组件的命名空间。标记的其余部分是运行时类自身的名称。与 HTML 控件相似,这些标记也必须包含 runat="server" 属性。下面是一个声明的示例:

<aspextBox id="textBox1" runat="server" Text="基督山伯爵">
</aspextBox>

  在上例中,"asp"是标记前缀,会映射到 System.Web.UI.WebControls 命名空间。


图 2. ASP+ Web 控件

  文本显示

  Label 控件用于在页面中显示只读的静态文本或数据绑定的文本:

<aspabel runat="server" Text="Label1" Font-Italic="true">
</aspabel>

  输入控件

  Web 控件组中包含的一些控件,允许最终用户输入将由服务器上的页面处理的数据。

  TextBox 控件用于提供文本编辑能力。与 Label 控件相似,这里的文本也可以是数据绑定的。TextBox 控件支持多种模式,可以用来实现单行输入、多行输入和密码输入:

<aspextBox runat="server" Text="TextBox1"></aspextBox>




<aspextBox runat="server" Mode="Multiline" Rows="3">
  TextBox1
</asp:TextBox>




<asp:TextBox runat="server" Mode="Password"></asp:TextBox>



  CheckBox 控件用于生成能够在选中和清除这两种状态间切换的复选框:

<asp:CheckBox runat="server" Text="CheckBox1" Checked="True">
</asp:CheckBox> 



  RadioButton 控件与 CheckBox 控件相似,但使用时通常会与其它 RadioButton 控件组成一组,以提供一组互斥的选项:

<asp:RadioButton runat="server" Text="RadioButton1" GroupName="Group1" Checked="true">
</asp:RadioButton>
<asp:RadioButton runat="server" Text="RadioButton2" GroupName="Group1"></asp:RadioButton>




  选择控件

  下面的四个控件提供了允许用户从展示给他们的选项中进行选择的机制。选项列表的内容既可像下面的示例中那样是静态定义的,也可以使用数据源来动态填充。

  DropDownList 控件提供了将选项显示为下拉式列表,并从中进行单项选择的能力:

<aspropDownList runat="server">
<aspistItem Text="Choice1" Value="1" selected="true"/>
<aspistItem Text="Choice2" Value="2"/>
</aspropDownList>



  ListBox 控件能够以可滚动列表的形式显示选项,并允许从中选择单个或多个选项:

<aspistBox runat="server" SelectionMode="Multiple">
<asp:ListItem Text="Choice1" Value="1" selected="true"/>
<asp:ListItem Text="Choice2" Value="2"/>
</asp:ListBox>



  CheckBoxList 控件用于创建一组显示为一列或多列的 Checkbox 控件:

<asp:CheckBoxList runat="server">
<asp:ListItem Text="Choice1" Value="1" selected="true"/>
<asp:ListItem Text="Choice2" Value="2" selected="true"/>
</asp:CheckBoxList >



  RadioButtonList 控件与 CheckBoxList 控件非常相似。不同之处在于,它使用的是一组 RadioButton 控件以创建一组互斥的选项:

<asp:RadioButtonList runat="server">
<asp:ListItem Text="Choice1" Value="1" selected="true"/>
<asp:ListItem Text="Choice2" Value="2"/>
</asp:RadioButtonList >



  表单提交和回传

  下列控件用于将带有用户输入值的页面提交给服务器,以便用页面中的代码对这些值进行处理。这些控件会在服务器上产生一个 Click 事件,供您在代码中使用。

  Button 控件可以生成一个能够将页面再提交给服务器的三维按钮:

<asp:Button runat="server" Text="单击我"></asp:Button>



  LinkButton 控件的行为与 Button 控件相同。但它在页面上会显示为一个超级链接:

<asp:LinkButton runat="server" Text="单击我"></asp:Button>



  ImageButton 控件也用于提交页面。它会显示为一幅图像,并且能够提供用户单击位置的 x 坐标和 y 坐标:

<asp:ImageButton runat="server" ImageUrl="net.gif"></asp:Button> 



  导航

  HyperLink 控件用于生成能够跳转到其它 URL 的链接:

<asp:HyperLink runat="server" Text="跟我来" NavigateUrl="MyPage.aspx">
</asp:HyperLink>




  图像显示

  Image 控件能够在页面上显示图像:

<asp:Image runat="server" ImageUrl="net.gif"></asp:Image>



  版面控件

  Panel 控件常用作简单的组合控件以及动态创建的控件的容器。(请注意,Panel 控件通常不具有可见的外观。)

<aspanel runat="server"></aspanel>

  Table 控件与相关的 TableRow 和 TableCell 控件相结合,可以用来以编程的方法创建表或表式版面布局:
<asp:Table runat="server" GridLines="Both" BorderWidth="1px">
<asp:TableRow>
<asp:TableCell>[0,0]</asp:TableCell>
<asp:TableCell>[0,1]</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>[1,0]</asp:TableCell>
<asp:TableCell>[1,1]</asp:TableCell>
</asp:TableRow>
</asp:Table>



  日期选择

  Calendar 控件能够让用户浏览日期并进行日期选择(包括选择日期范围):

<asp:Calendar runat=server DayNameFormat="FirstLetter" ...>
<property name=SelectedDayStyle>
<asp:TableItemStyle Font-Bold="True" BackColor="#CCCCFF"/>
</property>
...
</asp:Calendar>



  列表绑定控件

  列表绑定控件用于显示与其相关联的数据源或列表的内容。它们提供了创建多种自定义及标准版式的能力。关于数据邦定,我们会用一个章节的内容来完整的说它。

  Repeater 控件是一个简单的列表绑定控件,它使用模板(即用于设定版式的 HTML 代码片断)来以一种"朴实无华"的,即没有预定义外观的方式显示数据源的内容:

<asp:Repeater runat="server">
<template name="HeaderTemplate">
<ol>
</template>
<template name="ItemTemplate">
<li>
<a runat="server" href='<%# DataBinder.Eval(Container.DataItem, "SiteURL") %>'>
<%# DataBinder.Eval(Container.DataItem, "SiteName") %>
</a>
</li>
</template>
<template name="FooterTemplate">
</ol>
</template>
</asp:Repeater>



  DataList 控件也使用模板来显示与之绑定的数据源的内容。此外,它还提供了自定义外观格式和布局的功能:

<aspataList runat="server">
<template name="ItemTemplate">
<%# DataBinder.Eval(Container.DataItem, "PersonName") %>
...
</template>
...
</aspataList>



  DataGrid 控件能够创建格式丰富的列表版式,用来显示与之绑定的数据源的内容。它提供了对排序、编辑和分页的支持。

<aspataGrid runat="server" ...>
<property name="Columns">
<asp:BoundColumn HeaderText="ID" .../>
...
</property>
...
</asp:DataGrid>



  Validation 控件

  Validation 控件简化了对用户输入的内容进行验证的工作。它们能自动为上层浏览器生成客户机端脚本,以便在进行回传前,在用户的计算机上进行验证,从而实现了交互性和对用户友好性更加良好的页面。与此同时,它们也能在服务器上作为第二道防线来完成同样的工作。"有关的参考资料"一节中列出的其它文章对此进行了详细说明。

  RequiredFieldValidator 控件用于确保用户填写了必须输入的那些输入控件。

  RangeValidator 控件用于检查用户输入的内容在有效取值范围之内。这对于数字或日期类型的输入内容十分有用。


  CompareValidator 控件用于对比一个控件中的输入内容与另一个控件中的输入内容。

  RegularExpressionValidator 控件能够检查用户输入的内容是否符合作为标准的规范表达式(或字符串模式)。

  CustomValidator 控件允许您提供自定义的服务器端和客户机端验证逻辑。

  ValidationSummary 控件能够提供由验证控件生成的所有错误信息的概要。

  零杂控件

  这个,我们会在第四讲,验证表单内容中详细阐述

  AdRotator 控件用于显示广告或横幅。广告的有关信息(包括其图像的 URL)使用 XML 文件来定义:

<asp:AdRotator runat="server" AdvertisementFile="AdsList.xml">
</asp:AdRotator>




  2.5 HTML 控件,WEB控件,都可以产生一样的效果,到底谁优谁劣?

  在开发这些控件时,我们反复地问自己,是否真的有必要同时提供具有一些重复功能的 HTML 控件组和 Web 控件组。您肯定也想了解 HTML 控件和 Web 控件究竟有什么异同,以及它们各自适用的场合。
这两组控件的异同可以通过以下方面来比较。

  控件抽象

  HTML 控件不具备任何抽象能力。每种控件与 HTML 标记都是一一对应的(请参见表 1)。

  Web 控件创建了更高级别的抽象,它们没有任何对应的 HTML 标记(如 Calendar 和 DataGrid)。因为它们不直接映射为 HTML 标记,所以 Web 控件还能够在适当的场合起到合并功能的作用(例如用一个 TextBox 控件来代替多个标记)。这种抽象为使用第三方提供的种类丰富的控件工具箱打开了方便之门。

  对象模型

  HTML 控件提供了以 HTML 为中心的对象模型。每种控件都包括一个属性集,可以使用该属性集来控制标记的属性。这个属性集使用了字符串名/值对,并且不是强类型的。

  在使用 HTML 控件时,您的编程方式与使用传统的 ASP 进行编程十分类似。因而,HTML 控件提供了一条快捷的移植途径 - 可以通过添加一个 runat="server" 属性来将一个标记转变为一个服务器控件。

  Web 控件提供了基于表单的、类似于 Visual Basic 的编程模式。它们也提供了属性集,但它们的主要目标在于提供一种格式丰富、类型安全且具有一致性的对象模型。每种 Web 控件都包含一组标准的属性,如 ForeColor、BackColor、Font 等。

  这种对象模型还在像 Visual Studio .NET 这样的设计工具中提供了更丰富的设计时体验。

  目标浏览器

  HTML 控件不会自动检测请求页面的浏览器的能力,也不会修改它们提供的 HTML。在使用这组控件时,您要负责确保您的页面能同时在高级和低级浏览器上工作。

  Web 控件能够自动对它们生成的结果进行调整,以确保输出结果在高级浏览器和低级浏览器上的工作同样出色。Web 控件还能够针对不同的浏览器提供不同的行为,从而充分发挥浏览器的潜力。例如,validation 控件还可以通过客户端的脚本来创建用于高级浏览器的具有高度交互性的页面。
  对生成的 HTML 的控制

  HTML 控件允许您完全控制所显示的内容以及发送到客户机浏览器的内容。

  Web 控件提供了更为丰富的对象模型,以及适应多种浏览器的能力。因而,它们没有提供对输出结果的相同程度的控制能力。

  在您开发 Web 应用程序时,您可以根据这两组控件的能力以及您的需求来从中进行选择。您还可以选择在同一页上混合使用这两组控件,使用一种类型的控件并不妨碍您同时使用另一种类型的控件。

  2.6 修饰和打扮你的控件

<span style="font: 12pt verdana; colorrange;font-weight:700" runat="server">
This is some literal text inside a styled span control
</span>

  注意画线部分,漂亮的字

<button style="font: 8pt verdana;background-colorghtgreen;border-color:black;width:100" runat="server">Click me!</button>

  漂亮的按钮,有圆角,很Cool,不用自己用Photoshop做了

<input type="text" value="One, Two, Three" style="font: 14pt verdana;background-color:yellow;border-styleashed;border-color:red;width:300;" runat="server"/>

  虚线框哦,也不用Photoshop就可以做了,style很强大。

  asp:Calender 控件中

<form runat="server">
<ASP:Calendar runat="server"
BackColor="Beige"
ForeColor="Brown"
BorderWidth="3"
BorderStyle="Solid"
BorderColor="Black"
Height="450"
Width="450"
Font-Size="12pt"
Font-Name="Tahoma,Arial"
Font-Underline="false"
CellSpacing=2
CellPadding=2
ShowGridLines=true
/>
</form>

  注意有颜色部分,这部分就是对控件的修饰,它的作用,就是让你的Web窗体更漂亮。

  再给一个例子

<ASP:Calendar CssClass="calstyle" runat="server"

BackColor="Beige"
ForeColor="Brown"
BorderWidth="3"
BorderStyle="Solid"
BorderColor="Black"
Height="450"
Width="450"
Font-Size="12pt"
Font-Name="Tahoma,Arial"
Font-Underline="false"
CellSpacing=2
CellPadding=2
ShowGridLines=true

TitleStyle-BorderColor="darkolivegreen"
TitleStyle-BorderWidth="3"
TitleStyle-BackColor="olivedrab"
TitleStyle-Height="50px"

DayHeaderStyle-BorderColor="darkolivegreen"
DayHeaderStyle-BorderWidth="3"
DayHeaderStyle-BackColor="olivedrab"
DayHeaderStyle-ForeColor="black"
DayHeaderStyle-Height="20px"

DayStyle-Width="50px"
DayStyle-Height="50px"

TodayDayStyle-BorderWidth="3"

WeekEndDayStyle-BackColor="palegoldenrod"
WeekEndDayStyle-Width="50px"
WeekEndDayStyle-Height="50px"

SelectedDayStyle-BorderColor="firebrick"
SelectedDayStyle-BorderWidth="3"

OtherMonthDayStyle-Width="50px"
OtherMonthDayStyle-Height="50px"
/>

  是不是更漂亮,设置也很简单,一看就能明白。

  2.7 最重要的两个注意事项

  注意,.net支持的语言不是VBScript 而是VB,所以声明变量的时候,不是简单的Dim就行了。

  注意 你写程序有99.9999999999999999%的可能不能正常显示中文,解决的方法就是:在D:\WINNT\Microsoft.NET\Framework\v1.0.2204(具体目录有可能不是这个,自己看着像就是了)有一个config.web的文件,在这个文件里面把 <globalization requestencoding="iso-8859-1" responseencoding="iso-8859-1" />改为<globalization requestencoding=" gb2312" responseencoding="gb2312"/> 好了,去体验一下中文的乐趣(同时大骂M$,应该把作为缺省语言啊!)
 

re:ASP.NET讲座(5)-数据库的操作A...

ASP.NET讲座(5)-数据库的操作ADO.NET


若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种。在这过程中,发生了许多有趣的事。例如,COM 闯入数据库领域,开始培植 OLE DB 的殖民进程。然后,大致相当于 OLE DB 自动化版本的 ActiveX? Data Objects (ADO) 被选来统治 Windows? 数据库开发者的 Visual Basic? 和 ASP 社区。
  通过 .NET,Microsoft 正在提供通用框架(即 Framework Class Library),其中将包括所有现有的 Windows API 甚至更多的内容。特别值得一提的是,它包括大量常用的库,而这些库现在需要通过各个 COM 对象分别获得。在这些库中,您会发现 XML 和 ADO 对象模型,它们被集成到了叫做 ADO.NET 的类子树中。

  ADO.NET 事实上成为构建数据感知 .NET 应用程序的基础。和 ADO 不同的是,ADO.NET 遵循更通用的原则,不那么专门面向数据库。ADO.NET 集合了所有允许数据处理的类。这些类表示具有典型数据库功能(如索引、排序和视图)的数据容器对象。尽管 ADO.NET 是 .NET 数据库应用程序的权威解决方案,但从总体设计上来看,它不象 ADO 模型那样以数据库为中心,这是 ADO.NET 的一大特点。

  ADO.NET 与 ADO 有很大差异。ADO.NET 是新的数据访问编程模型,需要开发人员的全面理解、投入和新思维。然而,一旦开始掌握 ADO.NET,您将意识到:原有的 ADO 技巧非常有助于您以不同、却更巧妙和可靠的方式来创建有效的应用程序和解决各种老问题。
(以上译自 Microsoft .NET部一位官员的讲话)

  5.1 目前的ADO.net

  目前 ADO.NET 提供了两种托管提供程序:一种用于 SQL Server 7.0 或更高版本,另一种用于其他所有您可能已经安装的 OLE DB 提供程序。在这两种情况下您分别使用不同的类,但遵循相似的命名规则。除前缀外,名称都是相同的。前一种情况前缀为 SQL,后一种情况则是 ADO。

<% @ Import Namespace="System.Data.ADO" %>
<% @ Import Namespace="System.Data.SQL" %>

  您应该使用 SQL 类访问 SQL Server 表,因为它们直接进入数据库服务器的内部 API,跳过了由 OLE DB 提供程序表示的中间层。ADO 类是 OLE DB 提供程序上的 .NET 接口,它们使用 COM Interop 桥进行工作。

  5.2 连接一个数据库

Dim myConnection As New
  SQLConnection("server=localhost;uid=sa;pwd=;database=pubs")
Dim myCommand As New
  SQLDataSetCommand("select * from Authors", myConnection)

或者
  SQLConnection myConnection = new SQLConnection();
  myConnection.DataSource = "localhost";
  myConnection.UserID = "sa";
  myConnection.Password = "";
  myConnection.ConnectionTimeout = 30;
  myConnection.Open();
  myConnection.Database = "pub";
  myConnection.IsolationLevel = IsolationLevel.ReadCommitted
   

  这里我们需要讲述一下Connection的方法和属性了。

  ConnectionTimeout超时

  DataBase 缺省数据库

  DataSource DNS

  UserID 原来叫UID

  Password

  State 取得目前连接的状态

  Open() 打开

  Close() 关闭
  5.3 操作数据库

  通过一个Command对象,我们才可以对数据库进行操作

Dim myConnection As SQLConnection = New SQLConnection("server=localhost;uid=sa;
pwd=;database=pubs")
Dim myCommand As SQLCommand = New SQLCommand("select * from Authors", myConnection)
myConnection.Open()
Dim dr As New SQLDataReader
myCommand.Execute(dr)

...

myConnection.Close()

或者 这样做
Dim myConnection As New SQLConnection("server=localhost;uid=sa;pwd=;database=pubs")
Dim mycommand As New SQLCommand( _
"UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'", _
myConnection)
myCommand.ActiveConnection.Open()
myCommand.ExecuteNonQuery()
myCommand.ActiveConnection.Close()


  这些都是SQLCommand的标准用法,下面列出了Command的所有属性和相关方法。

  ActiveConnection 取得或设置联结Connections

  CommandText 执行的SQL语句或储存过程(StoredProcedure)名

  CommandTimeout 超时

  CommandType Command操作的类型(StoredProcedure,Text,TableDirect)三种,默认Text

  Parameters 操作储存过程时使用

  Execute() 执行SQL语句或储存过程

  ExecuteNonQuery() 同上,但无返回,或者说,只返回记录的数量

  注意: 和ASP一样,在运行完以后一定要注意关闭Connection,否则会很耗服务器资源的。

  5.4 数据的显示

  在这节的讲解前,我们先建立一个数据库,名字叫 aspnet 然后里面有一张表user 结构如下:
uid username Email
1  User1 Mail1
2  User2 Mail2
3  User3  Mail3


  SQL 语句 Select * From User

  数据库语句 server=localhost;uid=sa;pwd=;database=aspnet

  5.4.1 用 DataReader 方法显示数据

  有两种方法可以显示数据 DataReader方法,和DataSet方法,而DataReader只能储存查询数据,我们先讲用DataReader方法显示

<script language="VB" runat="server">
  Sub Page_Load(Src As Object, E As EventArgs)
  Dim MyConnection As SQLConnection =
  New SQLConnection("server=localhost;uid=sa;
  pwd=;database=aspnet")
  Dim MyCommand As SQLCommand =
  New SQLCommand("select * from User", MyConnection)
  MyConnection.Open()
  Dim DR As SQLDataReader
  MyCommand.Execute(DR)
  MyDataGrid.DataSource = DR
  MyDataGrid.DataBind()
  MyConnection.Close()
  End Sub
</script>
<ASPataGrid id="MyDataGrid" runat="server"
  Width="700"
  BackColor="#ccccff"
  BorderColor="black"
  ShowFooter="false"
  CellPadding=3
  CellSpacing="0"
  Font-Name="Verdana"
  Font-Size="8pt"
  HeaderStyle-BackColor="#aaaadd"
/>

  对于显示的控制,大家可以复习一下前一讲,数据的绑定,其实多联系也是一种很好的方法。

  在定制显示中,还有一种比较使用的方法,而不用绑定

Dim DR As SQLDataReader

  DR["字段名"]的方法也可以取到数据

  5.4.2 用 DataSet 方法显示数据

  用DataSet记录的数据其实就是一个表,而对表的操作,只是对DataSet的操作,并没有改变数据库,而要到DataSet更新的时候,才完整的写入数据库,这个往往是新手容易忽视的地方。

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>

<html>
<script language="VB" runat="server">

  Sub Page_Load(Src As Object, E As EventArgs)

  Dim DS As DataSet
  Dim MyConnection As SQLConnection
  Dim MyCommand As SQLDataSetCommand
  
  MyConnection = New
  SQLConnection("server=localhost;uid=sa;pwd=;database=aspnet")
  MyCommand =
  New SQLDataSetCommand("select * from User",MyConnection)

  DS = new DataSet()
  ~~~初始化DataSet()
  MyCommand.FillDataSet(ds, "User")
  ~~~FillDataSet顾名思义把整个查询内容储存进DataSet中
  MyDataGrid.DataSource=ds.Tables("User").DefaultView
  MyDataGrid.DataBind()
  ~~~绑定数据
  End Sub
</script>
<body>

  <h3><font face="Verdana">
  Simple Select to a DataGrid Control
</font></h3>

<ASPataGrid id="MyDataGrid" runat="server"
  Width="700"
  BackColor="#ccccff"
  BorderColor="black"
  ShowFooter="false"
  CellPadding=3
  CellSpacing="0"
  Font-Name="Verdana"
  Font-Size="8pt"
  HeaderStyle-BackColor="#aaaadd"
  MaintainState="false"
/>

</body>
</html>
  5.5 数据的添加,修改,和删除

  其实他们是在就是简单的不要再简单的东西。

  添加:

DataRow dr=SQLDataSet.Tables["User"].NewRow();
dr["id"] = "4";
dr["username"] = "user4";
dr["Email"] = "mail4";
SQLDataSet.Tables.Rows.Add(dr);
修改:
SQLDataSet.Tables["user"].Rows[3]["username"]= "user5"
删除:
SQLDataSet.Tables["user"].Rows[3].Delete()
修改完之后,必须更新数据库
SQLCommand.Update(SQLDataSet, "user")

  5.6 关于显示中的分页问题

  这个问题,一再在论坛中给众人提出过,曾经是ASP中,一个比较难解决的问题,不过在ASP.net中,只不过是DataGrid的一个属性而已。

  AllowPaging="True" 是否支持分页

  PageSize="10" 每页显示多少

  PagerStyle-HorizontalAlign="Left" 分页显示的定位

  完整的例子:

<aspataGrid id="dataGrid1" runat="server"
  BorderColor="black"
  BorderWidth="1"
  GridLines="Both"
  CellPadding="3"
  CellSpacing="0"
  HeaderStyle-BackColor="#aaaadd"
  AllowPaging="True"
  PageSize="10"
  PagerStyle-HorizontalAlign="Left"/>
 

re:ASP.NET讲座(6)-ASP.NET...

ASP.NET讲座(6)-ASP.NET的几种主要文件


使用ASP的同仁们一定经常使用这些东西,因为不管什么产品的开发都离不开与用户的互动,而在ASP中,他们三个,正是互动的桥梁。
  ASP.net中,他们也受到了足够的重视,但改变不是很大。

  6.1 Application

  Application的生命周期

  Application的生命周期,并不是是从IIS5开始启动的那一刻开始,而是从客户对服务器发出第一个Request的那个时候开始的。从那时开始一个名叫HTTPApplication的Pool开始建立,这也是Application生命周期(lifetime)的开始。此时Application_OnStart的事件也发生了。直到Application_OnEnd的事件发生,才是Application生命周期的结束。

  Application写的网站计数器

<%
  Application.Lock()
  Application("counter") = CType(Application("counter") + 1, Int32)
  Application.UnLock()
%>

  与ASP中还是一样的。

  Application 与ASP中的不同的地方

  Application与ASP不同的地方在于 新多了两个事件 Application_OnRequestStart()和Application_OnRequestEnd() 这两个事件,在用户开始浏览一个aspx文件,和aspx文件运行结束时触发,也就是说,这两个事件,不是针对整个服务器来说的,而是对于单个程序来说。

  6.2 Session

  在ASP中,我们都知道,如果用户把浏览器上面的Cookies关掉,那么Session就不可能被传递了,ASP.net针对这个问题,提出Session的传递应该脱离Cookies。我们修改一下config.web,还记得这个文件吗?ASP.net的无安装化程序移植的精髓,都在这样的一个文件中。

  修改如下地方:<sessionstate cookieless="false" /> 改为True就可以了
其他地方 Session和ASP没有什么区别。

  6.3 Cookies

  这里和ASP就有一些区别大家注意了。

  建立一个Cookies

Dim cookie As New HttpCookie("user")
Cookie.Value = "yesky.com"
Response.AppendCookie(cookie)
读出一个Cookies
Dim cookie As New HttpCookie("user")
StrCookie = Cookie.Value

  6.4 State

  这个是一个全新的东西,它可以保存中间过程量在浏览器上面。比如,要注册一个新用户,我们往往在第一页上填写用户名,然后第二页填写联系方法,第三页填写相关的个人资料,这样三页就需要传递数据,以前通常的方法是在 <input>里面 hidden一个数据,现在通过State就好办多了。

  关于State,我们不做很多的介绍,如果您感兴趣,可以参看http://www.fmexpense.com/quickstart/doc/stateoverview.aspx#sessionstate 这是它的官方说明,也比较模糊。

  6.5 Global.aspx

  ASP.net中,为了突出和ASP的区别,特别将Global.asp改成Global.aspx 但功能没有很大的变化。
例子:

Sub Application_Start()
  Response.Write("Application is Starting...<br>")
End Sub

Sub Session_Start()
  Response.Write("Session is Starting...<br>")
  Session.Timeout = 1
End Sub

  这个非常简单了。
 
1  /  1  页   1 跳转

版权所有 阿达西论坛  Discuz!NT  Sitemap

Powered by Discuz!NT 2.1.202 (Licensed)    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.140625 second(s) , 4 queries. 冀ICP备07002106号
返顶部