asp.net
ASP+出来都快半年了,我们站点也做了不少的介绍,但是今天飞刀我才终于有了心思来写一下关于这个ASP+的文章了。呵呵,让大家久等了。
首先我得申明,本教程适用于有一定网络编程经验的人,比如asp,PHP,CGI,JSP开发者,如果你对网络编程一点也不了解,那么您还是先去学学其它的语言,不然以下的文章您会有很多看不懂的地方。呵呵。
我们开始吧。
ASP+的运行环境
我们要学习ASP+,就先得搞一个调试环境出来。让你的"爱鸡"支持asp+,那么您需要以下的条件:
Windows 2000 Professional, Windows 2000 Server , Windows 2000 Advanced Server
NGWS
IE 5.5
以上是支持ASP+的需要,大家看到目前只有Windows 2000才有安装NGWS的可能,NT,Windows 98,Windows Me 暂时还没有办法支持asp+,不会老盖答应我们在以后的版本中会在其它的平台上支持asp+的,大家慢慢等吧。而且还不是所有的window 2000都可以,windows 2000的版本号要是RC 3618以上的才行(这是本人写这篇文章时的情况,现在连win98都可以了)。飞刀我以前就是windows 2000的版本太低,不得不放弃正版,买了D版(全是ASP+惹的祸)。
NGWS是个大块头,有111M之巨,飞刀兄弟我的小猫跑了5个小时才把它搞定,它的下载地址是http://download.microsoft.com/download/VisualStudioNET/Install/2204/NT5/EN-US/setup.exe 幸得M$有钱,下载站点的带宽还大,下载速度还可以咯。大家慢慢来吧。
IE 5.5 是上面最好搞定的东东了。这个东西现在已经是泛滥了:),D版的不少,呵呵,不能称D版,它本身就是免费的:)
ASP+与ASP的比较
说起ASP+的好处,那就很多了。我们这里举几个最明显的。
速度,ASP+是编译后执行的,也就是说当aspx文件第一次被请求时被编译,以后的请求就不需要重新编译了。而ASP是解释性脚本语言,每次都需要重新编译,这种原因,其速度就无法和ASP+来比了。不过ASP+的编译速度也够慢的,在本地机上调试,第一次执行的速度是很慢的。不过以后就很快了,第一次执行的任务就交给管理员去做吧。我们就去享受以后的高速度吧:)
功能,ASP+的功能是无比强大的,几乎能做我们在网络能想到的事情,呵呵,举个简单的例子,那就是文件的上传,在ASP的时代,这个问题只能通过组件才行,但是在ASP+中只需要以下的代码就可以了。下面是一个例子:
< html>
< head>
< script language="C#" runat="server">
void Button1_Click(object Source, EventArgs e) {
if (Text1.Value == "") {
Span1.InnerHtml = "Error: you must enter a file name";
return;
}
if (File1.PostedFile != null) {
try {
File1.PostedFile.SaveAs("c:\\temp\\"+Text1.Value);
Span1.InnerHtml = "File uploaded successfully to c:\\temp\\"+Text1.Value+" on the Web server";
}
catch (Exception exc) {
Span1.InnerHtml = "Error saving file c:\\temp\\"+Text1.Value+"
"+ exc.ToString();
}
}
}
< /head>
< body>
HtmlInputFile Sample
< form enctype="multipart/form-data" runat="server">
Select File to Upload:
Save as filename (no path): < input id="Text1" type="text" runat="server">
< span id=Span1 style="font: 8pt verdana;" runat="server" />
< input type=button id="Button1" value="Upload" OnServerClick="Button1_Click" runat="server">
< /form>
< /body>
< /html>
相信大家都能看懂上面的程序,不是太难。看看用ASP+上传文件就是这么简单,根本就不需要什么组件了,呵呵,只可怜飞刀我写了半天的"aspcnUP上传组件",一片心血就被M$给搞完了。我们的组件也要下岗了,唉,可悲啊。(飞刀悲情地唱起"风萧萧兮,易水寒,壮士一去不复返......")
ASP+能做的事远不止如此,这里只是举个小例子,它的更多功能我们以后再去介绍,呵呵。
ASP+还有一大优点就是结构化编程,他的程序语言可以自已任意加,目前支持C#,VB,JavaScript,呵呵,大家是不是对不支持VBScript感到失望 ?!:)这是大势所趋,大家也不必失望啦,我以后的文章的例程都会用C#去写,呵呵,如果你钟情于VB,你也可以看看本站一篇关于VB与C#语法比较的文章,很容易上手的。对于C#,大家可能比较陌生,不过我们看看上面的程序,发现他还是有很多地方是我们容易上手的。我个人认为它是C++与VB与Java的结合体,也可能是M$宣战Java的第一步,大家用多了就会觉得他好处多:)
写ASP+程序,你会觉得是在写VB或者是VC,很多的思想全都来自于VB,VC,可能是M$.net的原因吧。所以我们写程序的思维需要改变,要让你自已感觉这是在写软件,不是在写传统的asp程序。
至于ASP+还有的一些功能,我们站点以前的文章也介绍了,呵呵,大家查查,我们以后也会通过程序去了解,只可惜,我们服务商的服务器不能使用asp+,否则我们会更多了解的asp+的特性。
另外一个大家关心的问题就是,装有NGWS的Windows 2000是否还支持asp,担心我们有了aspx,就没有了asp,以前的程序就全玩完了。这个问题大家根本不用担心,NGWS设计时M$就考虑过,NGWS同样可以解析asp,文件的扩展名是.asp,那就使用asp的方法解析,如果是.aspx就使用asp+来解析,所以您以前的asp是不会报销的。哈哈,大家可以放心啦。飞刀的机器上就是这样的咯。aspx,asp都可以用:)
这第一节就到这儿了,下一节,我们介绍一下,asp+的语法:),大家多多捧场。
上一节 ,我们简单介绍了ASP+的配制环境,我们这一节来谈谈ASP+的语法.其实当你装好NGWS后,他所带的文档是最好的学习ASP+的教程,要你E文足够好,以及很好的耐性,学习ASP+不是难事啦.我们这些家伙也是从这里学了很多的,这篇关于ASP+语法的文章,大多数也来自于M$的原文,最可惜的就是我们的服务器不能装上NGWS,有些例子,大家不能看到执行结果,不太好。不过有些地方,我会把执行结果显示出来的。我们开始这一节吧:)
一个ASP+页面的后缀名是".ASPX".它能够包含八种不同的语法标置元素.我们将在这篇文章中介绍这几种不同的语法,并且举出一个例子来显示它的用法。
< % %> 与 < %= %>
用过asp吗,用过,那么大家就不会对这个标签陌生了。呵呵,下面是一个简单的例子。他执行后的结果我想我不写不出来,大家也都知道啦。这个就不多谈了,呵呵.
< % for (int i=0; i<8; i++)
{
%>
Hello World!
< % } %>
上面的例子中< % %>之间的程序将会被执行,并显示出的结果,< %="Hello World" %>就等于< % Response.Write ("Hello World") %>
注意:在C#中,是以分号(;)做为分隔符,但是我们要注意一些事情。
C# code
< % Response.Write("Hello World"); %> 这里的分号是必须的
< %="Hello World"; %> 这样写会有一些小问题就是,显示的结果是 "Response.Write("Hello World";);"
正确
声明代码的语法: < % ... number = subtract(number, 1); ... %>
重要问题:ASP+不像ASP,在ASP中所能的函数得在区域中声明,但是在ASP+中所有函数和变量都必须在区域中声明。否则,aspx编译时会出现错误.
ASP+ 服务器端控件语法
服务器上的控件使用开发者能够动态产生HTML页面,并发送给客户(如Netscape和IE所产生的JavaScript是不同的。还有普通浏览器和WAP浏览所收到的页面也是不同的).他们对象的声明也是运用了标签。但是他们和其它的标签是不同的。因为他们包含有一个"runat=server"属性。(呵呵,这个属性我们在ASP中也用过,不过功能就...)。下面的例子演示了控件的使用方法。
< html>
< script language="C#" runat=server>
void Page_Load(Object sender, EventArgs e) {
Message.Text = "Welcome to ASP+";
}
< /script>
< body>
< asp:label id="Message" font-size=24 runat=server/>
< /body>
< /html>
上面的源代码中我们加入ID为 "Message":
< asp:label id="Message" font-size=24 runat="server"/>
看了上面的代码,是不是发现我们在写VB程序,呵呵,先搭好骨架,然后再一个个的去编写他们事件处理。这就是M$给我们的新概念.
ASP+ Html 服务器控件语法
HTML服务器控件,使开发者程序化的操作HTML元素。一个HTML服务器控件只是比普通HTML元素多了一个"runat=server"属性。下面的例子具体演示了HTML服务控件的用法。
< script language="C#" runat=server>
void Page_Load(Object sender, EventArgs e) {
Message.InnerHtml = "Welcome to ASP+";
}
< /script>
...
< span id="Message" style="font-size:24" runat=server/>
他执行的结果和第一个程序的结果是一样的
数据捆绑(Databinding)语法 < %# %>
数据捆绑技术使得ASP+开发者能够很形像地把控件的属性与数据容器的值联系起来.在 < %#%>这个区域内的代码只有在"DataBind"方法调用后才会被执行。下面的例子就演示了它的用法。
Here is a value:
通过这种方法使得名为"MyList"的控件程序化,这时就该调用DataBind()方法了。
void Page_Load(Object sender, EventArgs e)
{ ArrayList items = new ArrayList();
items.Add("One");
items.Add("Two");
items.Add("Three");
MyList.DataSource = items;
MyList.DataBind();
}
Object标签语法: < object runat="server" />
Object标签语法使得开发者能够使用就基本的标签就能声明和示例一个对象。如下:
< object id="items" class="System.Collections.ArrayList" runat="server"/>
这个对象会在运行时自动建立,而且名字为items
void Page_Load(Object sender, EventArgs e) {
items.Add("One");
items.Add("Two");
items.Add("Three");
...
}
注释语法:
注释能使开发者阻止代码(包括控件)的执行或引用。下面的例子演示了这个语法的应用.
< %--
< asp:calendar id="MyCal" runat=server/>
< % for (int i=0; i<45; i++) { %>
Hello World
< % } %>
--%>
SSI 语法: <-- #Include File="Locaton.inc" -->
写过最基本的HTML的兄弟对他不会陌生,所以也不想多讲啦:)
< !-- #Include File="Header.inc" -->
...
< !-- #Include File="Footer.inc" -->
下面的一节,我们将来具体看看HTML控件和用户控件
不好意思,很久没有写文章,主要原因是前段时间考试,忙得飞刀我昏头转向,现在时间终于有多余了,所以不得不又提起笔来了(注:没有笔,回到家,连电脑也没有,只有在网吧混日子)。但是由于回到家中,没有电脑,所以我的文章也只能是断续地写出来,大家请见谅。
最近有朋友问我,哪里可以学好ASP+,我早就说过NGWS中带的文档是最好的学习手册,不过由于NGWS的要求太高,还有它的大小(110M)的问题,有一部分兄弟,不能装上它,我给你们一个站点http://www.aspnextgen.com/quickstart/aspplus/ ,上面的文档就是NGWS直接带的,而且这个站点全是由asp+构建的,大家可以直接看到aspx的执行情况,我现在对我们的站点唯一不满的地方就是不能执行aspx,不能给大家看到例程的执行结果。
好了不说多话了,我们这一节要来看看如何使用asp+中的控件吧。
ASP+中的控件分为两种,一种是HTML控件(HtmlControls ),一种是Web控件(WebControls) ,我们这一节先来讲讲比较简单的HTML控件。另一种控件留到下一节再去讲:)
HTML控件,如果只是看外观,发现和普通的HTML标签没有什么两样,不过就是
<select><a>
这些东东,唯一的区别就是在标签的后面多了个RunAt="server",其实我们对这个RunAt="Server"我们也不陌生,呵呵,在asp的global.asa文件我们经常看到。但是如果在asp+中多了这个,那么程序代码的性质也就变了。如:
<select id="aspcn">
<option>ASP</option>
<option>JSP</option>
<option>PHP</option>
</select>
上面的select不过是一个普通的HTML标签而已,但是如果在select后加上RunAt="server",那么一切都变了。
<select id="aspcn" RunAt="Server">
<option>ASP</option>
<option>JSP</option>
<option>PHP</option>
</select>
那么这个就是一个asp+程序,我们就可以写ASPX程序了。 如:
<% @ import NameSpace="System.Data" %>
<Script Language="c#" RunAt="Server">
void aspcn_onclick(Object src,EventArgs e)
{
string selectValue;
if(Page.IsPostBack)
{
selectValue=aspcn.SelectedItem.Value;
SelectItem.Text=selectValue;
}
}
</script>
<html>
<head><title>Select演示程序</title></head>
<body>
请选择:
<form runat="server">
<select id="aspcn" RunAt="Server" >
<option>ASP</option>
<option>JSP</option>
<option>PHP</option>
<option>ASP+</option>
<option>COM</option>
</select>
<asp: Bottun text="提交" >
<br>
您的选取的Select列表是:<font color=red><asp: Label id="SelectItem" Text="暂无"> </font>
</form>
上面是一个很简单的aspx例子,主要目的是演示select HTML控件的用法. 上面的例子中,首先显示如下:
请选择: ASP JSP PHP ASP+ COM
您的选取的Select列表是:暂无
当你点击"提交"键后,你就会后到:(假设我们 选取的是PHP)
请选择: ASP JSP PHP ASP+ COM
您的选取的Select列表是:PHP
从上面的例子中我们可以看到,我们主要操作的是aspcn_onclick子程序,而这个程序是由名为sub的控件激发的。(这里的Button和Label均属于WEB控件,我们下一节再讲),我们在aspcn_onclick中对于名为aspcn的select控件的操作,我们也很熟悉,呵呵,是不是很像 客户端的JavaScript?!相信用过javascript的兄弟,一定能看懂程序,呵呵,我们写服务器程序是不是像是在写客户端的程序,M$推出.Net也就是为了达到这个效果,不过这个对初学者来说是个不太好的事情,因为初学者本来就搞不清什么是客户端什么是服务器,现在又把他们写在一起,相信很多人要搞糊啦,所以我一开始就建议初学者还是先看看一些基础的东东为好。
我们使用aspcn.SelectedItem.Value来获取aspcn列表的值,然后通过SelectItem.Text=selectValue再把这个值传给名为selectItem的控件。就成为了我们看到的情形。程序是很简单的,我们在这里只是让大家有一个初步的了解。
几乎每一种HTML标签加上个RunAt="server"就可以成为HTML控件了。具体的有:
HtmlAnchor HtmlButton HtmlForm HtmlGenericControl
HtmlImage HtmlInputButton (Button) HtmlInputButton (Reset) HtmlInputButton (Submit)
HtmlInputCheckBox HtmlInputFile HtmlInputHidden HtmlInputImage
HtmlInputRadioButton HtmlInputText (Password) HtmlInputText (Text) HtmlSelect
HtmlTable HtmlTableCell HtmlTableRow HtmlTextArea
我一时也无法把他们的用法一个个的说明,请大家到我上面说的那个站点自已去看,我们以后写程序就要熟练使用HTML控件和 Web控件了。只要E文好,相信没有什么问题,呵呵,不要指望飞刀我翻译啊,我头都大了,大家饶我一命。
另外我们要提醒大家的就是,因为我们写ASP+一般都用c#,所以在命名控件时注意大小写,不然编译时会出错的。再有就是如果程序编译时请仔细看好出错信息,不要一出错就马上想到去问,自已动脑筋去想想,收获会更大。呵呵,这一章就到这里了,下一节就要讲WEB控件。
(先说一下我的安排了咯,呵呵,讲完WEB控件后,再讲Bind,然后就是数据库,接着就是Application和Session,再后来的以后再安排)
88,祝大家过个好春节:)
整天的泡在考研的资料里面,闲暇时就和朋友们大谈特谈NGWS,一天终于被lazy兄一棍子打醒,"都什么年代了,还在谈NGWS",慌忙中赶快重新下载我心目中的"NGWS",装上后,发现今非昔比,这个NGWS已经改名叫Micosoft .net ,ASP+也堂而皇之的改名为ASP.NET.而且现在不仅window 2000能够安装调试asp.net了,而且连最烂的"瘟酒吧"也可以了,于是发现自已离时代越来越远了.....(台下人:发表什么感叹,还不快入正题)(同时,一不明飞行物突然向飞刀砸来,飞刀立刻倒在血泊中.....)
Web控件
按照计划我们这一节要谈Web控件,我想了半天也不知道如何定义这个web控件,它比html控件难于理解,毕竟HTML太像原来我们熟悉的东东了。而web控件确与我们平常见到的有很大的出入,不知道大家还记不记得我说过的一句话,那就是ASP.net的程序就像是写VBVC中的窗口,先再这些窗口中加入我们的需要的控件,然后再对这些控件进行操作。如果你学过一点点VBVC的编程,那么理解这个就不难了,ASP.net中的web控件就像是VBVC中的控件一样。我们先在页面中摆好这些控件,然后再通过Page_Load以及其它一些自定义事件来对他们进行控制。我们还是通过看一个实例来了解一下吧。我们先举简单的Label控件吧.
源代码如下:
测试Label控件:
这是红色粗体的文字
这段程序执行后的结果是
测试Label控件:
这是红色粗体的文字
这是蓝色斜体的文字
这是黑体字,并且带下划线
看看源代码,再看看程序执行的结果是不是发现Label控件和VB中的Label控件很相近:)
(注:你在你的机器上看到的中文可能是乱码,那么请您打开x:\winnt\microsoft\framework\v1.0.224目录,找到其中的config.web文件,打开它,找到下面的文字:
requestencoding="iso-8859-1"
responseencoding="iso-8859-1"
/>
把其中的iso-8859-1改为gb2312,OK,再执行一下程序,中文是不是出来了:)
这里我们用了三种方法来操作Label控件,第一种是类似HTML的闭合标签,将要写的字写在之间;第二种是用到了Label控件Text属性;第三种,是通过执行Page_Load事件而把文字写进Label控件的。这三种方法都很有用,看你自已的喜欢了,第三种是最常用的啦,以后我们会经常用到.Label控件不光有Text属性来控制它的文字,而且还有font-size等属性来控制字体大小,颜色等属性,这里的例子我都用到了,大家好好看看,相信没有什么问题
我们见过了Label控件的操作,那么我们对web控件有了一个感性的认识,在ASP.net中,一共有28个WEB控件,它们是:
AdRotator Button Calendar CheckBox
CheckBoxList CompareValidator CustomValidator DataGrid
DataList DropDownList HyperLink Image
ImageButton Label LinkButton ListBox
Panel RadioButton RadioButtonList RangeValidator
RegularExpressionValidator Repeater RequiredFieldValidator Table
TableCell TableRow TextBox ValidationSummary
大家可以到我上一节讲的那个站点去具体看一下他们各自的用法,这里我本来想主要讲一下DataGrid,DataLit,ListBox但是他们其中都需要用到Binding知识(这个我们在下一节讲),所以我们主要来看看DropDownList的用法(因为我们上一节是用的select来讲解HTML控件的)
先看一个例子:
请选择ASPCN.Com工作室程员:
飞刀
大风
Zsir
布丁
亚豪
它执行显示为:
请选择ASPCN.Com工作室程员:
飞刀 大风 Zsir 布丁 亚豪
如果我选中了其中的飞刀,然后再按下"提交"键,那么显示就是:
请选择ASPCN.Com工作室程员:
飞刀 大风 Zsir 布丁 亚豪
您选择的是本工作室的飞刀成员
DropDownList控件,其实和select差不多,功能也就多那么一点点,但是这个多一点点的功能就是很有用的,这就是我们下一节要学习的Bind,呵呵,是不是想学了:)不急,我们先分析一下这里的程序。
我们用DropDownList控件建立起一个List列表,然后我们选择其中的一个选项,最后按提交键提交。这里我们可以看到处理程序的是sub_click这个事件,这里由名为sub的button控件激发,所用的事件是Onclick,这里和HTML控件所使用的OnServerClick事件是不同的,大家要分清楚。其它的好像没有什么可以说了。呵呵
我们下一节要讲bind,这个是很重要的。