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