最大的網(wǎng)站源碼資源下載站,
asp+出來都快半年了,我們站點也做了不少的介紹,但是今天飛刀我才終于有了心思來寫一下關(guān)于這個asp+的文章了。呵呵,讓大家久等了。
首先我得申明,本教程適用于有一定網(wǎng)絡(luò)編程經(jīng)驗的人,比如asp,php,cgi,jsp開發(fā)者,如果你對網(wǎng)絡(luò)編程一點也不了解,那么您還是先去學(xué)學(xué)其它的語言,不然以下的文章您會有很多看不懂的地方。呵呵。
我們開始吧。
asp+的運行環(huán)境
我們要學(xué)習(xí)asp+,就先得搞一個調(diào)試環(huán)境出來。讓你的"愛雞"支持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+,不會老蓋答應(yīng)我們在以后的版本中會在其它的平臺上支持asp+的,大家慢慢等吧。而且還不是所有的window 2000都可以,windows 2000的版本號要是rc 3618以上的才行(這是本人寫這篇文章時的情況,現(xiàn)在連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 是上面最好搞定的東東了。這個東西現(xiàn)在已經(jīng)是泛濫了:),d版的不少,呵呵,不能稱d版,它本身就是免費的:)
asp+與asp的比較
說起asp+的好處,那就很多了。我們這里舉幾個最明顯的。
速度,asp+是編譯后執(zhí)行的,也就是說當(dāng)aspx文件第一次被請求時被編譯,以后的請求就不需要重新編譯了。而asp是解釋性腳本語言,每次都需要重新編譯,這種原因,其速度就無法和asp+來比了。不過asp+的編譯速度也夠慢的,在本地機(jī)上調(diào)試,第一次執(zhí)行的速度是很慢的。不過以后就很快了,第一次執(zhí)行的任務(wù)就交給管理員去做吧。我們就去享受以后的高速度吧:)
功能,asp+的功能是無比強(qiáng)大的,幾乎能做我們在網(wǎng)絡(luò)能想到的事情,呵呵,舉個簡單的例子,那就是文件的上傳,在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 runat="server" />
< input type=button id="button1" value="upload" onserverclick="button1_click" runat="server">
< /form>
< /body>
< /html>
相信大家都能看懂上面的程序,不是太難。看看用asp+上傳文件就是這么簡單,根本就不需要什么組件了,呵呵,只可憐飛刀我寫了半天的"aspcnup上傳組件",一片心血就被m$給搞完了。我們的組件也要下崗了,唉,可悲啊。(飛刀悲情地唱起"風(fēng)蕭蕭兮,易水寒,壯士一去不復(fù)返......")
asp+能做的事遠(yuǎn)不止如此,這里只是舉個小例子,它的更多功能我們以后再去介紹,呵呵。
asp+還有一大優(yōu)點就是結(jié)構(gòu)化編程,他的程序語言可以自已任意加,目前支持c#,vb,javascript,呵呵,大家是不是對不支持vbscript感到失望 ?!:)這是大勢所趨,大家也不必失望啦,我以后的文章的例程都會用c#去寫,呵呵,如果你鐘情于vb,你也可以看看本站一篇關(guān)于vb與c#語法比較的文章,很容易上手的。對于c#,大家可能比較陌生,不過我們看看上面的程序,發(fā)現(xiàn)他還是有很多地方是我們?nèi)菀咨鲜值摹N覀€人認(rèn)為它是c++與vb與java的結(jié)合體,也可能是m$宣戰(zhàn)java的第一步,大家用多了就會覺得他好處多:)
寫asp+程序,你會覺得是在寫vb或者是vc,很多的思想全都來自于vb,vc,可能是m$.net的原因吧。所以我們寫程序的思維需要改變,要讓你自已感覺這是在寫軟件,不是在寫傳統(tǒng)的asp程序。
至于asp+還有的一些功能,我們站點以前的文章也介紹了,呵呵,大家查查,我們以后也會通過程序去了解,只可惜,我們服務(wù)商的服務(wù)器不能使用asp+,否則我們會更多了解的asp+的特性。
另外一個大家關(guān)心的問題就是,裝有ngws的windows 2000是否還支持asp,擔(dān)心我們有了aspx,就沒有了asp,以前的程序就全玩完了。這個問題大家根本不用擔(dān)心,ngws設(shè)計時m$就考慮過,ngws同樣可以解析asp,文件的擴(kuò)展名是.asp,那就使用asp的方法解析,如果是.aspx就使用asp+來解析,所以您以前的asp是不會報銷的。哈哈,大家可以放心啦。飛刀的機(jī)器上就是這樣的咯。aspx,asp都可以用:)
這第一節(jié)就到這兒了,下一節(jié),我們介紹一下,asp+的語法:),大家多多捧場。
上一節(jié) ,我們簡單介紹了asp+的配制環(huán)境,我們這一節(jié)來談?wù)刟sp+的語法.其實當(dāng)你裝好ngws后,他所帶的文檔是最好的學(xué)習(xí)asp+的教程,要你e文足夠好,以及很好的耐性,學(xué)習(xí)asp+不是難事啦.我們這些家伙也是從這里學(xué)了很多的,這篇關(guān)于asp+語法的文章,大多數(shù)也來自于m$的原文,最可惜的就是我們的服務(wù)器不能裝上ngws,有些例子,大家不能看到執(zhí)行結(jié)果,不太好。不過有些地方,我會把執(zhí)行結(jié)果顯示出來的。我們開始這一節(jié)吧:)
一個asp+頁面的后綴名是".aspx".它能夠包含八種不同的語法標(biāo)置元素.我們將在這篇文章中介紹這幾種不同的語法,并且舉出一個例子來顯示它的用法。
< % %> 與 < %= %>
用過asp嗎,用過,那么大家就不會對這個標(biāo)簽?zāi)吧恕:呛牵旅媸且粋€簡單的例子。他執(zhí)行后的結(jié)果我想我不寫不出來,大家也都知道啦。這個就不多談了,呵呵.
< % for (int i=0; i<8; i++)
{
%>
hello world!
< % } %>
上面的例子中< % %>之間的程序?qū)粓?zhí)行,并顯示出的結(jié)果,< %="hello world" %>就等于< % response.write ("hello world") %>
注意:在c#中,是以分號(;)做為分隔符,但是我們要注意一些事情。
c# code
< % response.write("hello world"); %> 這里的分號是必須的
< %="hello world"; %> 這樣寫會有一些小問題就是,顯示的結(jié)果是 "response.write("hello world";);"
正確
聲明代碼的語法: < % ... number = subtract(number, 1); ... %>
重要問題:asp+不像asp,在asp中所能的函數(shù)得在區(qū)域中聲明,但是在asp+中所有函數(shù)和變量都必須在區(qū)域中聲明。否則,aspx編譯時會出現(xiàn)錯誤.
asp+ 服務(wù)器端控件語法
服務(wù)器上的控件使用開發(fā)者能夠動態(tài)產(chǎn)生html頁面,并發(fā)送給客戶(如netscape和ie所產(chǎn)生的javascript是不同的。還有普通瀏覽器和wap瀏覽所收到的頁面也是不同的).他們對象的聲明也是運用了標(biāo)簽。但是他們和其它的標(biāo)簽是不同的。因為他們包含有一個"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"/>
看了上面的代碼,是不是發(fā)現(xiàn)我們在寫vb程序,呵呵,先搭好骨架,然后再一個個的去編寫他們事件處理。這就是m$給我們的新概念.
asp+ html 服務(wù)器控件語法
html服務(wù)器控件,使開發(fā)者程序化的操作html元素。一個html服務(wù)器控件只是比普通html元素多了一個"runat=server"屬性。下面的例子具體演示了html服務(wù)控件的用法。
< script language="c#" runat=server>
void page_load(object sender, eventargs e) {
message.innerhtml = "welcome to asp+";
}
< /script>
...
< span id="message" runat=server/>
他執(zhí)行的結(jié)果和第一個程序的結(jié)果是一樣的
數(shù)據(jù)捆綁(databinding)語法 < %# %>
數(shù)據(jù)捆綁技術(shù)使得asp+開發(fā)者能夠很形像地把控件的屬性與數(shù)據(jù)容器的值聯(lián)系起來.在 < %#%>這個區(qū)域內(nèi)的代碼只有在"databind"方法調(diào)用后才會被執(zhí)行。下面的例子就演示了它的用法。
here is a value:
通過這種方法使得名為"mylist"的控件程序化,這時就該調(diào)用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標(biāo)簽語法: < object runat="server" />
object標(biāo)簽語法使得開發(fā)者能夠使用就基本的標(biāo)簽就能聲明和示例一個對象。如下:
< 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");
...
}
注釋語法:
注釋能使開發(fā)者阻止代碼(包括控件)的執(zhí)行或引用。下面的例子演示了這個語法的應(yīng)用.
< %--
< 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" -->
下面的一節(jié),我們將來具體看看html控件和用戶控件
不好意思,很久沒有寫文章,主要原因是前段時間考試,忙得飛刀我昏頭轉(zhuǎn)向,現(xiàn)在時間終于有多余了,所以不得不又提起筆來了(注:沒有筆,回到家,連電腦也沒有,只有在網(wǎng)吧混日子)。但是由于回到家中,沒有電腦,所以我的文章也只能是斷續(xù)地寫出來,大家請見諒。
最近有朋友問我,哪里可以學(xué)好asp+,我早就說過ngws中帶的文檔是最好的學(xué)習(xí)手冊,不過由于ngws的要求太高,還有它的大小(110m)的問題,有一部分兄弟,不能裝上它,我給你們一個站點http://www.aspnextgen.com/quickstart/aspplus/ ,上面的文檔就是ngws直接帶的,而且這個站點全是由asp+構(gòu)建的,大家可以直接看到aspx的執(zhí)行情況,我現(xiàn)在對我們的站點唯一不滿的地方就是不能執(zhí)行aspx,不能給大家看到例程的執(zhí)行結(jié)果。
好了不說多話了,我們這一節(jié)要來看看如何使用asp+中的控件吧。
asp+中的控件分為兩種,一種是html控件(htmlcontrols ),一種是web控件(webcontrols) ,我們這一節(jié)先來講講比較簡單的html控件。另一種控件留到下一節(jié)再去講:)
html控件,如果只是看外觀,發(fā)現(xiàn)和普通的html標(biāo)簽沒有什么兩樣,不過就是
<select><a>
這些東東,唯一的區(qū)別就是在標(biāo)簽的后面多了個runat="server",其實我們對這個runat="server"我們也不陌生,呵呵,在asp的global.asa文件我們經(jīng)常看到。但是如果在asp+中多了這個,那么程序代碼的性質(zhì)也就變了。如:
<select id="aspcn">
<option>asp</option>
<option>jsp</option>
<option>php</option>
</select>
上面的select不過是一個普通的html標(biāo)簽而已,但是如果在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="提交" onclick="aspcn_onclick">
<br>
您的選取的select列表是:<font color=red><asp: label id="selectitem" text="暫無"> </font>
</form>
上面是一個很簡單的aspx例子,主要目的是演示select html控件的用法. 上面的例子中,首先顯示如下:
請選擇: asp jsp php asp+ com
您的選取的select列表是:暫無
當(dāng)你點擊"提交"鍵后,你就會后到:(假設(shè)我們 選取的是php)
請選擇: asp jsp php asp+ com
您的選取的select列表是:php
從上面的例子中我們可以看到,我們主要操作的是aspcn_onclick子程序,而這個程序是由名為sub的控件激發(fā)的。(這里的button和label均屬于web控件,我們下一節(jié)再講),我們在aspcn_onclick中對于名為aspcn的select控件的操作,我們也很熟悉,呵呵,是不是很像 客戶端的javascript?!相信用過javascript的兄弟,一定能看懂程序,呵呵,我們寫服務(wù)器程序是不是像是在寫客戶端的程序,m$推出.net也就是為了達(dá)到這個效果,不過這個對初學(xué)者來說是個不太好的事情,因為初學(xué)者本來就搞不清什么是客戶端什么是服務(wù)器,現(xiàn)在又把他們寫在一起,相信很多人要搞糊啦,所以我一開始就建議初學(xué)者還是先看看一些基礎(chǔ)的東東為好。
我們使用aspcn.selecteditem.value來獲取aspcn列表的值,然后通過selectitem.text=selectvalue再把這個值傳給名為selectitem的控件。就成為了我們看到的情形。程序是很簡單的,我們在這里只是讓大家有一個初步的了解。
幾乎每一種html標(biāo)簽加上個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#,所以在命名控件時注意大小寫,不然編譯時會出錯的。再有就是如果程序編譯時請仔細(xì)看好出錯信息,不要一出錯就馬上想到去問,自已動腦筋去想想,收獲會更大。呵呵,這一章就到這里了,下一節(jié)就要講web控件。
(先說一下我的安排了咯,呵呵,講完web控件后,再講bind,然后就是數(shù)據(jù)庫,接著就是application和session,再后來的以后再安排)
88,祝大家過個好春節(jié):)
整天的泡在考研的資料里面,閑暇時就和朋友們大談特談ngws,一天終于被lazy兄一棍子打醒,"都什么年代了,還在談ngws",慌忙中趕快重新下載我心目中的"ngws",裝上后,發(fā)現(xiàn)今非昔比,這個ngws已經(jīng)改名叫micosoft .net ,asp+也堂而皇之的改名為asp.net.而且現(xiàn)在不僅window 2000能夠安裝調(diào)試asp.net了,而且連最爛的"瘟酒吧"也可以了,于是發(fā)現(xiàn)自已離時代越來越遠(yuǎn)了.....(臺下人:發(fā)表什么感嘆,還不快入正題)(同時,一不明飛行物突然向飛刀砸來,飛刀立刻倒在血泊中.....)
web控件
按照計劃我們這一節(jié)要談web控件,我想了半天也不知道如何定義這個web控件,它比html控件難于理解,畢竟html太像原來我們熟悉的東東了。而web控件確與我們平常見到的有很大的出入,不知道大家還記不記得我說過的一句話,那就是asp.net的程序就像是寫vbvc中的窗口,先再這些窗口中加入我們的需要的控件,然后再對這些控件進(jìn)行操作。如果你學(xué)過一點點vbvc的編程,那么理解這個就不難了,asp.net中的web控件就像是vbvc中的控件一樣。我們先在頁面中擺好這些控件,然后再通過page_load以及其它一些自定義事件來對他們進(jìn)行控制。我們還是通過看一個實例來了解一下吧。我們先舉簡單的label控件吧.
源代碼如下:
測試label控件:
這是紅色粗體的文字
這段程序執(zhí)行后的結(jié)果是
測試label控件:
這是紅色粗體的文字
這是藍(lán)色斜體的文字
這是黑體字,并且?guī)聞澗€
看看源代碼,再看看程序執(zhí)行的結(jié)果是不是發(fā)現(xiàn)label控件和vb中的label控件很相近:)
(注:你在你的機(jī)器上看到的中文可能是亂碼,那么請您打開x:/winnt/microsoft/framework/v1.0.224目錄,找到其中的config.web文件,打開它,找到下面的文字:
requestencoding="iso-8859-1"
responseencoding="iso-8859-1"
/>
把其中的iso-8859-1改為gb2312,ok,再執(zhí)行一下程序,中文是不是出來了:)
這里我們用了三種方法來操作label控件,第一種是類似html的閉合標(biāo)簽,將要寫的字寫在之間;第二種是用到了label控件text屬性;第三種,是通過執(zhí)行page_load事件而把文字寫進(jìn)label控件的。這三種方法都很有用,看你自已的喜歡了,第三種是最常用的啦,以后我們會經(jīng)常用到.label控件不光有text屬性來控制它的文字,而且還有font-size等屬性來控制字體大小,顏色等屬性,這里的例子我都用到了,大家好好看看,相信沒有什么問題
我們見過了label控件的操作,那么我們對web控件有了一個感性的認(rèn)識,在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
大家可以到我上一節(jié)講的那個站點去具體看一下他們各自的用法,這里我本來想主要講一下datagrid,datalit,listbox但是他們其中都需要用到binding知識(這個我們在下一節(jié)講),所以我們主要來看看dropdownlist的用法(因為我們上一節(jié)是用的select來講解html控件的)
先看一個例子:
請選擇aspcn.com工作室程員:
飛刀
大風(fēng)
zsir
布丁
亞豪
它執(zhí)行顯示為:
請選擇aspcn.com工作室程員:
飛刀 大風(fēng) zsir 布丁 亞豪
如果我選中了其中的飛刀,然后再按下"提交"鍵,那么顯示就是:
請選擇aspcn.com工作室程員:
飛刀 大風(fēng) zsir 布丁 亞豪
您選擇的是本工作室的飛刀成員
dropdownlist控件,其實和select差不多,功能也就多那么一點點,但是這個多一點點的功能就是很有用的,這就是我們下一節(jié)要學(xué)習(xí)的bind,呵呵,是不是想學(xué)了:)不急,我們先分析一下這里的程序。
我們用dropdownlist控件建立起一個list列表,然后我們選擇其中的一個選項,最后按提交鍵提交。這里我們可以看到處理程序的是sub_click這個事件,這里由名為sub的button控件激發(fā),所用的事件是onclick,這里和html控件所使用的onserverclick事件是不同的,大家要分清楚。其它的好像沒有什么可以說了。呵呵
我們下一節(jié)要講bind,這個是很重要的。
新聞熱點
疑難解答
圖片精選