最為程序員,我們?cè)僖膊槐貙TML和代碼混在一起,再也不必從上往下一行一行的寫(xiě)代碼了。ASP.NET讓代碼和表現(xiàn)分開(kāi),使用了事件驅(qū)動(dòng)的編程模式。在這里,我們將看到ASP.NET中Web Form的基本結(jié)構(gòu)。
ASP.NET的頁(yè)面是事件驅(qū)動(dòng)和面向?qū)ο蟮?。就是說(shuō),程序員能為事件提供代碼,如按鈕的點(diǎn)擊,頁(yè)面的調(diào)用等等。在頁(yè)面中能被編程訪問(wèn)的每個(gè)標(biāo)記都有一個(gè)runat=server的屬性。盡管標(biāo)準(zhǔn)的HTML控件仍能被使用,但ASP.NET提供了更加強(qiáng)大的服務(wù)端控件。這些控件提供了一套自己的方法和屬性,通過(guò)它們能充分的定制控件的輸出。這些控件和頁(yè)面一起被編譯,它們依據(jù)客戶端瀏覽器的版本輸出不同的HTML。這就使得我們不需要考慮瀏覽器兼容的問(wèn)題,一個(gè)頁(yè)面可以在任何的瀏覽器上運(yùn)行。
我們建立一張頁(yè)面,兩個(gè)輸入框,收集訪問(wèn)者的名字和最喜歡的顏色。另外,我們希望結(jié)果傳回本身,然后在最上方顯示一行信息,并維持輸入框中的內(nèi)容。
這是傳統(tǒng)的ASP頁(yè)面:
<%@ Language=VBScript %>
我們看到,在這里我們不得不將ASP代碼和HTML混在一起,使得代碼非常的難以看懂,想象一下如果一個(gè)非常復(fù)雜的頁(yè)面……
我們的頁(yè)面首先判斷是否是回傳,還是第一次訪問(wèn)。我們通過(guò)檢查Request.Form集合。如果是0,表示是第一次訪問(wèn),否則表示提交的按鈕被按下了,我們將通過(guò)Response.Write輸出一條信息給用戶。
<%If Request.Form.Count <> 0 Then
Response.Write "Your name is "
Response.Write Request.Form("txtName")
Response.Write ", and your favorite color is "
Response.Write Request.Form("selColor")
Response.Write "
"End If%>
對(duì)于我們表單中的每個(gè)元素,我們必須通過(guò)代碼來(lái)使它們保持狀態(tài)。這些代碼簡(jiǎn)單而相似?! ?