ASP.NET常用小技巧_實用技巧

來源:互聯網
上載者:User

今天為大家介紹6個ASP.NET常用技巧,使用操作簡單,具有很高的實用性,記得收藏哦

1.跟蹤頁面執行 
設定斷點是頁面調試過程中的常用手段,除此之外,還可以通過查看頁面的跟蹤資訊進行錯誤排查以及效能最佳化。ASP.NET中啟用頁面跟蹤非常方便,只需在Page指令中加入Trace="True"屬性即可:設定斷點是頁面調試過程中的常用手段,除此之外,還可以通過查看頁面的跟蹤資訊進行錯誤排查以及效能最佳化。ASP.NET中啟用頁面跟蹤非常方便,只需在Page指令中加入Trace="True"屬性即可: 

<%@ Page Language="C#" Trace="true"> 

跟蹤資訊可以分為兩類: 
a.頁面執行詳細情況 

其中主要包括頁面生命週期中各事件列表、控制項樹列表(可以查看每個控制項的HTML位元組數以及ViewState位元組數)、Session狀態、Application狀態、Cookie集合、QueryString集合、伺服器變數等資訊。 
b.自訂跟蹤資訊 
通過在頁面代碼中調用Trace.Write()或Trace.Warn()方法便可將指定內容寫入跟蹤資訊中的"Trace Information"節。就算頁面發生了錯誤,跟蹤資訊還是會顯示出來,並且在發布應用程式時無需刪除相關的跟蹤代碼,只需從Page指令中移除Trace屬性即可。 

2.在伺服器端控制項中添加用戶端屬性 
我們有時會向伺服器端控制項中添加一些特殊的屬性,這類屬性不需要伺服器端的處理,只需簡單的發送至用戶端即可,我們不妨稱其為用戶端屬性,例如HTML 屬性或自訂屬性(可能用於實現某種特定的JavaScript功能)。可以通過以下幾種方法達到這個目的: 
a.直接向控制項添加用戶端屬性 

<asp:Button ID="MyButton" Text="ClickMe" onmouseover="this.style.cursor='poi nter'" runat="server" /> 

其中的onmouseover是用戶端屬性,注意,編譯器是允許這種寫法的,但會顯示警告。 
b.調用內建方法 
可以通過調用WebControl.Attributes.Add()方法為控制項添加用戶端屬性,如下所示: 

MyButton.Attributes.Add("onmouseover", "this.style.cursor='pointer'"); 

這也是最常用的方法。 
c.建立自訂控制項 
如果某個類型的伺服器端控制項中經常需要添加用戶端屬性,則可以考慮建立一個繼承自該伺服器端控制項的自訂控制項,其中包含特定的用戶端屬性。 
正是考慮到這一點,ASP.NET 2.0中為按鈕控制項(包括Button、LinkButton、ImageButton控制項)提供了OnClientClick屬性,可以這樣寫: 

MyButton.OnClientClick = "alert('Hello!')"; 

真是貼心的功能!   

3.表單資料的伺服器端驗證 
將資料驗證任務從伺服器端遷移到用戶端的過程促使了JavaScript的產生,這也是我們沿用至今的一種方式。但只有在保證用戶端JavaScript正常啟動並執行前提下,這種方式才能發揮其作用。不幸的是,總有一些例外,比如瀏覽器不支援JavaScript,或者使用者刻意關閉了瀏覽器的JavaScript功能,這就導致了第一重防護失效。比較保險的做法是加入第二重防護,即對使用者提交的資料進行伺服器端驗證,但這無疑將增加開發人員的工作量。 
ASP.NET 2.0提供了一系列表單資料驗證控制項,可以非常輕鬆的完成用戶端及伺服器端的雙重資料驗證任務。但要使伺服器端驗證功能發揮作用,還需要用到Page.IsValid屬性,請看下面的例子: 

<form id="MyForm" runat="server">  <div>   姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox> <asp:RequiredField Validator ID="RequiredFieldValidator1" ControlToValidate="txtName" ErrorMessage="請填寫 姓名!" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>  </div>  <div>   <asp:Button ID="btnSubmit" Text="提交" runat="server" />  </div> </form> 

這是一個HTML片段,其中有一個RequiredFieldValidator控制項用於檢查是否已填寫姓名。下面是點擊按鈕時執行的伺服器端代碼: 

protected void btnSubmit_Click(object sender, EventArgs e) {   if (Page.IsValid) //注意:不要遺漏對Page.IsValid屬性的判斷   {     Response.Write("你的名字是:" + txtName.Text);   } } 

其中,要特別注意對Page.IsValid屬性的判斷,只有頁面中所有驗證控制項對資料的驗證都成功時,Page.IsValid屬性才為True,這代表提交的資料為有效資料,可以進入下一步操作。 

4.跳過表單驗證 
在某些情況下,我們需要跳過表單中所有控制項的驗證,然而在另外一些情況下,我們卻希望有選擇的觸發表單中某些控制項的驗證功能。分別來看看這兩種情況: 
a.跳過所有驗證 
假設有個表單,其中除了各種資料錄入控制項外還有兩個按鈕,一個是提交按鈕,另一個是取消按鈕,同時表單中還有一些資料驗證控制項。我們希望當點擊取消按鈕的時候無需驗證表單中資料的有效性,而是直接將頁面提交至伺服器並將其重新導向到某個指定頁面。 
要實現這個功能,可以利用按鈕控制項(包括Button、LinkButton、ImageButton控制項)的CausesValidation屬性,將該屬性設為false即可跳過表單中的所有驗證。 
b.觸發某些驗證 
假設有個表單,被劃分成兩個功能區,一個用於使用者登入,另一個用於使用者註冊,我們希望當點擊登入按鈕時只觸發登入區的資料驗證,當點擊註冊按鈕時只觸發註冊區的資料驗證。 
解決辦法是將相關的資料驗證控制項和資料提交控制項(按鈕控制項)加入同一個驗證組,這一點是通過將各相關控制項的ValidationGroup屬性設定成相同的值來實現的。   

5.保持捲軸位置 
假設有個頁面,其中以列表形式顯示了一些資料記錄,每次編輯其中的記錄時都需要向伺服器提交頁面,為了提供良好的使用者體驗,我們希望每次編輯一條記錄並儲存後,捲軸位置都能保持不變。傳統的做法是每次提交頁面時將當前捲軸所在位置資訊按某種方式(Hidden欄位或QueryString)傳給伺服器端,當頁面返回用戶端時,由伺服器端根據傳入的位置資訊以JavaScript形式重新設定捲軸位置。 
如果通過ASP.NET來實現這一功能將變得非常簡單,只需在Page指令中加入MaintainScrollPositionOnPostback="true"屬性即可: 

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true"> 

6.禁用不必要的ViewState 
在ASP.NET的運行機制中,ViewState起著重要的作用。ViewState經過編碼後存入表單Hidden欄位,每當頁面回傳至伺服器時再進行解碼。因此,ViewState的使用會帶來兩個問題:頻寬的佔用以及計算資源的消耗。好在不是所有控制項都需要啟用ViewState,我們完全可以禁用不必要的ViewState。 
ViewState預設是開啟的,需要手動關閉: 

a.禁用頁面ViewState 
在Page指令中加入EnableViewState="false"屬性即可: 

<%@ Page Language="C#" EnableViewState="false"> 

加入這個屬性後,整個頁面以及其中的所有控制項都將無法使用ViewState,因此需謹慎使用。 
b.禁用控制項ViewState 
這是推薦的方式,將控制項的EnableViewState屬性設為False即可禁用其ViewState,這裡有個簡單的竅門: 
如果某個控制項的狀態不能由操作者改變,則可以禁用其ViewState。最典型的莫過於Label控制項了,只能顯示資訊,無法操作。 
但TextBox、DorpDownList等控制項的狀態是可以改變的(通過輸入、選擇等操作),因此保留他們的ViewState還是有用的。

以上就是小編為大家整理的ASP.NET的6個小技巧,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.