從asp到asp.net之快速轉型[轉] (ASP(.net) X-在線(xiàn) 技術(shù)論壇)
從asp到asp.net之快速轉型[轉]http://www.e-mu.cn/bbs/thread.php?fid=53&page= 問(wèn)題列表: 1.怎樣建立asp.net運行環(huán)境? 2.asp直接放在虛擬目錄下運行就可以了,那aspx呢? 3.vs.net是怎樣建立一個(gè)asp.net應用程序的? 4.aspx中的代碼究竟是怎樣執行的?與asp中有什么區別? 5.用asp的思路理解asp.net--代碼文件中的代碼怎樣控制頁(yè)面的顯示? 6.隱藏代碼文件的結構是怎樣的? 1.怎樣建立asp.net運行環(huán)境? asp有了IIS就可以了,而asp.net也很簡(jiǎn)單,只要在IIS基礎上裝一個(gè).net Framework。那 么想要運行asp.net就會(huì )和運行asp同樣簡(jiǎn)單,參照問(wèn)題2。 底下是.net Framework1.1的下載地址,直接按照向導安裝好就ok了!http://download.microsoft.com/download/7/b/9/7b90644d-1af0-42b9-b76d-a2770319a 568/dotnetfx.exe 2.asp直接放在虛擬目錄下運行就可以了,那aspx呢? 答案很簡(jiǎn)單:完全一樣:) 如果你有一個(gè)aspx的示例網(wǎng)站,那么直接把它拷貝到你建立的一個(gè)虛擬目錄下就可以了。 唯一要注意的可能就是如果有webconig文件,一定要直接放到虛擬目錄之下,否則會(huì )出錯 。當然微軟對于運行asp.net的解釋可能會(huì )涉及到更深層面,包括私有,共有程序集,權限 之類(lèi),所以他會(huì )用“部署”這樣一個(gè)龐大的詞匯,我倒認為對于初學(xué)者來(lái)說(shuō)實(shí)在有點(diǎn)小題 大作。 而咱們的目標不過(guò)是讓它先運行起來(lái)再說(shuō):) 3.vs.net是怎樣建立一個(gè)asp.net應用程序的? 我使用vs.net開(kāi)發(fā)的,所以只針對這個(gè)開(kāi)發(fā)環(huán)境:P。vs.net把aspx之類(lèi)的“網(wǎng)頁(yè)”集稱(chēng)之 為應用程序,多少有點(diǎn)讓初學(xué)者迷惑(我一開(kāi)始就是這樣:P),這很容易讓人覺(jué)得這與a sp幾乎完全不一樣,其實(shí)不然(盡管實(shí)現思想上有很大差異),各個(gè)網(wǎng)頁(yè)其實(shí)還是相互獨 立的,和asp中一樣,所以我寧愿還稱(chēng)之為“網(wǎng)頁(yè)”。vs.net建立一個(gè)asp.net程序其實(shí)就 是幫你建立一個(gè)虛擬目錄,然后在這個(gè)虛擬目錄下建立項目文件(管理多個(gè)aspx)。這與D reamwaver或Frontpage中建立一個(gè)站點(diǎn)的性質(zhì)完全一樣,建立這樣的項目只是為了方便開(kāi) 發(fā)環(huán)境來(lái)識別出當前項目包括哪些文件,實(shí)際運行時(shí)項目的概念其實(shí)是不存在的。 4.aspx中的代碼究竟是怎樣執行的?與asp中有什么區別? 按照微軟的定義,aspx中的代碼在第一次運行是要經(jīng)過(guò)編譯的,這與asp中的程序解釋執行 有著(zhù)本質(zhì)的區別。然而,從運行結果來(lái)看,這些區別可以說(shuō)是完全透明的。理解aspx中的 代碼的關(guān)鍵其實(shí)是要看的懂代碼的結構。和asp結構相同的嵌入式代碼我就不說(shuō)了,那個(gè)在 理解了代碼隱藏之后很容易明白。 你現在是否對類(lèi)似這樣的aspx開(kāi)頭感到不解?:P <%@ Page CodeBehind="myDatum.aspx.cs" Language="c#" AutoEventWireup="false" In herits="njuJob.myDatum" %> 這是用vs.net建立aspx的典型開(kāi)頭,我想從快速入門(mén)的角度看只要了解這幾個(gè)屬性: @ Page就不用說(shuō)了,就是一個(gè)標志來(lái)說(shuō)明底下是對頁(yè)面的屬性描述 Language:使用的語(yǔ)言 CodeBehind:此頁(yè)面對應的代碼存儲在哪個(gè)文件中 Inherits:頁(yè)面從哪個(gè)類(lèi)繼承,此例子中表示是njuJob命名空間中的myDatum類(lèi) 后兩個(gè)屬性是必須要理解的 代碼隱藏是vs.net獨有的功能(好像其它環(huán)境不支持),它允許把對應于一個(gè)頁(yè)面的程序 邏輯和表示邏輯作為兩個(gè)文件分離開(kāi)來(lái)(這是不同于asp的一個(gè)明顯區別),通常是這樣的 結構:sample.aspx對應的代碼文件是sample.aspx.cs(使用的c#語(yǔ)言),codebehind中會(huì ) 自動(dòng)指明。vs.net在編譯時(shí)可以將所有的代碼隱藏文件編譯到一個(gè)dll中(所謂的程序集) ,當aspx頁(yè)面被處理時(shí),處理程序可以從Inherits中找到所繼承的類(lèi),然后從dll中找到這 個(gè)類(lèi),并實(shí)例化從而執行程序得到輸出的html。 可能現在大家對這樣的解釋沒(méi)有一個(gè)整體的認識,所以請看下面的問(wèn)題: 5.用asp的思路理解asp.net--代碼文件中的代碼怎樣控制頁(yè)面的顯示? 考慮一個(gè)簡(jiǎn)單的例子,在asp中,如果你想要動(dòng)態(tài)生成一個(gè)表格插入到頁(yè)面中,那么做法通 常是在需要插入的地方加入一段程序和Response.Write語(yǔ)句來(lái)實(shí)現,稍微變一下,有人可 能會(huì )在插入的地方僅加一條語(yǔ)句<%=strTheTalbe%>,而strTheTable的值可能在這之前已經(jīng) 計算好了,可能是通過(guò)一個(gè)函數實(shí)現的,但這種計算肯定還是包含在這個(gè)asp頁(yè)面中。 現在考慮怎樣在asp.net中實(shí)現這個(gè)過(guò)程,我們先引入最簡(jiǎn)單的一種控件,Literal控件( 關(guān)于控件大家應該有個(gè)大概的認識,就是一個(gè)通用的程序模塊之類(lèi)的意思),這個(gè)控件的 功能就是在頁(yè)面中插入一段字符串,它具有一個(gè)text屬性,你指定這個(gè)屬性為一個(gè)字符串 ,那么這個(gè)字符串就會(huì )在生成的html文件的相應位置。這應該很好理解,就跟asp中的<%= strTheTalbe%>的功能幾乎完全一樣。這個(gè)Literal控件在aspx中的聲明方式如下: <asp:Literal id="ltlTable"></asp:Literal> 當要使用代碼控制這個(gè)Literal時(shí),就用下面的語(yǔ)句: ltlTable.Text="<table><tr>……"; 這樣就實(shí)現了和asp中一樣的功能。代碼實(shí)際上是在隱藏文件中的,在隱藏文件的類(lèi)中會(huì )有 一個(gè)聲明來(lái)包含這樣的控件,這種聲明通常都是由vs.net自動(dòng)完成的,即:你在頁(yè)面中添 加一個(gè)控件,vs.net就會(huì )為你在代碼隱藏文件中加入相應的聲明。隱藏文件的結構分析可 以見(jiàn)下一個(gè)問(wèn)題. 相信通過(guò)這樣的例子大家應該能對asp.net用控件實(shí)現文本輸出的功能有了一定的了解,其 實(shí)更多更復雜的控件的實(shí)現原理完全一樣,只是它們提供了更多自動(dòng)話(huà)的功能,例如一個(gè) 表格控件可以讓你直接輸出一個(gè)表格,而不用自己去寫(xiě)html代碼,至于怎樣精確的控制生 成的html代碼就要靠自己去經(jīng)驗積累和技術(shù)提升了。 6.隱藏代碼文件的結構是怎樣的? 我們來(lái)實(shí)際分析一個(gè)文件: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 以上是說(shuō)明引用了哪些程序集,這和asp中的包含文件應該類(lèi)似,只有包含了某個(gè)文件才能 使用其中的函數,而這邊只用引用了某個(gè)程序集,才能使用它提供的控件。 namespace njuJob //說(shuō)明你的程序集的命名空間(這暫時(shí)不必理解) public class myDatum : System.Web.UI.Page //這是asp.net頁(yè)面對象模型(暫時(shí)不必 理解) ~~~~~~~~這個(gè)就是aspx頭中的繼承屬性 { System.Web.UI.WebControls.Literal ltlTable; //對aspx頁(yè)面中的控件的聲明 private void Page_Load(object sender, System.EventArgs e) { // 程序實(shí)際上是從這里開(kāi)始執行 ltlTable.Text="……"; MyFunction(); } private void MyFunction() //可以聲明你自己的函數以供本頁(yè)面使用 { } } 這個(gè)隱藏文件會(huì )被vs.net編譯進(jìn)dll,當aspx被處理時(shí)會(huì )執行。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報 。