ASP.NET編程中的十大技巧(下)
發(fā)布時(shí)間:2008-12-14 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
6. HyperLink控件、LinkButton控件的差別
對(duì)于Web訪問(wèn)者而言,HyperLink、LinkButton控件是一樣的,但它們?cè)诠δ芊矫嫒匀挥休^大的差異。
當(dāng)用戶(hù)點(diǎn)擊控件時(shí),HyperLink控件會(huì)立即將用戶(hù)“導(dǎo)航”到目標(biāo)URL,表件不會(huì)回送到服務(wù)器上。LinkButton控件則首先將表件發(fā)回到服務(wù)器,然后將用戶(hù)導(dǎo)航到目標(biāo)URL。如果在“到達(dá)”目標(biāo)URL之前需要進(jìn)行服務(wù)器端處理,則使用LinkButton控件;如果無(wú)需進(jìn)行服務(wù)器端處理,則可以使用HyperLink控件。
7、注釋代碼
這一技巧并不是針對(duì)ASP.NET的,但它是一個(gè)良好的編程習(xí)慣。
注釋不僅僅應(yīng)當(dāng)說(shuō)明代碼會(huì)執(zhí)行什么操作,還應(yīng)當(dāng)注明原因。例如,不要僅僅在注釋中說(shuō)明是在遍歷數(shù)組,而是要說(shuō)明遍歷數(shù)組是根據(jù)某一算法計(jì)算一個(gè)值,除非算法是相當(dāng)簡(jiǎn)單的,否則還應(yīng)當(dāng)對(duì)算法進(jìn)行簡(jiǎn)要的說(shuō)明。
.NET工程中的不同的編程語(yǔ)言都有各自不同的注釋符號(hào),下面是一個(gè)簡(jiǎn)要的說(shuō)明:
HTML <!-- 注釋 -->
JavaScript // 注釋
VBScript ' 注釋
VB.NET ' 注釋
C# // 注釋
/* 多行內(nèi)容
的注釋
*/
SQL -- 注釋
在服務(wù)器控件的開(kāi)始和結(jié)束標(biāo)記中沒(méi)有注釋符號(hào),但服務(wù)器能夠忽略掉所有它不能識(shí)別的屬性,因此我們能夠通過(guò)使用沒(méi)有定義的屬性來(lái)插入注釋。下面是一個(gè)例子:
<asp:TextBox
id="txtLastName"
size="40"
comment="這是我的注釋"
runat="server" />
在Visual Studio .NET中對(duì)源代碼進(jìn)行注釋非常簡(jiǎn)單。高亮度顯示需要注釋的行,然后按Ctrl+K+C組合鍵添加注釋。要?jiǎng)h除注釋?zhuān)恍韪吡炼蕊@示被注釋的代碼,并按下Ctrl+K+U組合鍵。
在C#工程中,我們還可以通過(guò)在每行的開(kāi)始處使用///輸入XML注釋小節(jié)。在注釋小節(jié)中,我們可以使用下面的XML標(biāo)記組織注釋?zhuān)?
<summary></summary>
<remarks></remarks >
<param><braram>
<returns></returns>
<newpara></newpara>
要在Visual Studio .NET中查看這些XML注釋的格式化的報(bào)告,我們可以首先選擇“工具”菜單項(xiàng),然后選擇“建立注釋W(xué)eb網(wǎng)頁(yè)”菜單項(xiàng)。
8、使用trace方法和trace屬性記錄Page目錄中網(wǎng)頁(yè)的執(zhí)行情況
調(diào)試程序的一種古老的技術(shù)是在程序中的關(guān)健點(diǎn)插入輸出語(yǔ)句,通常情況下,輸出信息中會(huì)包含重要變量的值,相關(guān)信息可以輸出到屏幕、日志文件或者數(shù)據(jù)庫(kù)。
在ASP.NET中,通過(guò)使用Page命令中的trace屬性,這種調(diào)試技術(shù)的使用更簡(jiǎn)單了。Page命令是ASPX文件開(kāi)始處的一行代碼,它提供編譯器的指示。Page命令中包含一個(gè)或多個(gè)屬性,向編譯器提供使用的編程語(yǔ)言、代碼支持文件的位置或要繼承的類(lèi)的名字等信息。
Page命令中的屬性之一是trace,其值可能是true或false,下面是一個(gè)典型的Page命令,其中的trace屬性的值是true:
<%@ Page language="c#" trace="true" %>
如果trace屬性的值設(shè)置為true,由ASPX文件生成的Web頁(yè)就會(huì)顯示出來(lái),除了網(wǎng)頁(yè)本身外,關(guān)于該頁(yè)的大量其他信息也會(huì)顯示出來(lái)。這些信息以下面小節(jié)的形式顯示在一張表格中:
·Request細(xì)節(jié) 提供Session ID、請(qǐng)求時(shí)間和請(qǐng)求的狀態(tài)碼。
·Trace Information 包含跟蹤日志、網(wǎng)頁(yè)生命周期中按時(shí)間先后順序各個(gè)步驟的列表。另外,也可以向其中添加定制信息。
·控件樹(shù) 以一種分層次的方式列出網(wǎng)頁(yè)上的所有控件,包括每個(gè)控件以字節(jié)計(jì)算的大小。
·Cookies集合 列出該網(wǎng)頁(yè)創(chuàng)建的所有Cookie。
·頭部集合 HTTP頭部以及它們的值。
·Server變量 與該網(wǎng)頁(yè)相關(guān)的Server環(huán)境變量。
包含在Trace Information小節(jié)中的跟蹤日志是最有用的,在這里我們可以插入自己的跟蹤命令。trace類(lèi)中有2個(gè)方法能夠在跟蹤日志中插入命令:Trace.Write和Trace.Warn,除了Trace.Warn命令用紅色字體顯示、Trace.Write命令用黑色字體顯示外,它們是相同的。下面是跟蹤日志的一個(gè)屏幕快照,其中包含有幾個(gè)Trace.Warn命令。
跟蹤日志中最方便的功能是我們可以在開(kāi)發(fā)和測(cè)試過(guò)程中在整個(gè)代碼中插入Trace.Write和Trace.Warn語(yǔ)句,而在最終交付應(yīng)用程序時(shí),可以通過(guò)改變Page命令中trace屬性的值,禁止這些命令起作用,而無(wú)需在部署應(yīng)用軟件前刪除這些輸出語(yǔ)句。
9、使用存儲(chǔ)過(guò)程
微軟公司的SQL Server和其他現(xiàn)代關(guān)系數(shù)據(jù)庫(kù)都使用SQL命令定義和處理查詢(xún)。一個(gè)SQL語(yǔ)句或一系列SQL語(yǔ)句提交給SQL Server,SQL Server會(huì)對(duì)命令進(jìn)行解析,然后創(chuàng)建一個(gè)查詢(xún)計(jì)劃并對(duì)它進(jìn)行優(yōu)化,然后執(zhí)行該查詢(xún)計(jì)劃,這都需要大量的時(shí)間。
存儲(chǔ)過(guò)程是一系列被查詢(xún)處理器預(yù)解析和優(yōu)化的SQL命令,這些命令會(huì)被存儲(chǔ)起來(lái),可以得到快速地執(zhí)行。存儲(chǔ)過(guò)程也被稱(chēng)作sprocs,它可以接收輸入?yún)?shù),使一個(gè)單一的存儲(chǔ)過(guò)程能夠處理較大范圍的特定的查詢(xún)。
因?yàn)閟procs是預(yù)先被解析的,對(duì)于復(fù)雜的查詢(xún)更顯得重要,其查詢(xún)計(jì)劃是預(yù)先優(yōu)化的,因此調(diào)用查詢(xún)過(guò)程比執(zhí)行相同功能的SQL語(yǔ)句速度要快得多。
10、使用.NET命令行
.NET命令行工具在命令提示符窗口中運(yùn)行。為了使命令能夠執(zhí)行,它必須駐留在命令提示符的當(dāng)前目錄中,或通過(guò)設(shè)置PATH環(huán)境變量。
. NET SDK在“啟動(dòng)”菜單上安裝一個(gè)菜單項(xiàng),該菜單項(xiàng)能夠打開(kāi)一個(gè)正確設(shè)置了PATH環(huán)境變量的命令提示符窗口。我們可以通過(guò)依次點(diǎn)擊“開(kāi)始”->“程序”->“Microsoft Visual Studio .NET”->“Visual Studio .NET工具”->“Visual Studio .NET命令提示符”,啟動(dòng)命令提示符窗口。
通過(guò)在將該菜單項(xiàng)從菜單上拖到桌面上時(shí),同時(shí)按Ctrl+C鍵,就可以將該菜單項(xiàng)的快捷方式拷貝到桌面上,使用起來(lái)會(huì)非常方便。