自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹ASP.NET的實(shí)用技巧

開發(fā) 后端
本文介紹的是ASP.NET的實(shí)用技巧,從跟蹤頁面,表單數(shù)據(jù)的服務(wù)器端驗(yàn)證和跳過表單驗(yàn)證等方面為大家介紹的。希望對你有幫助,一起來看。

關(guān)于ASP.NET的實(shí)用技巧,其實(shí)我們已經(jīng)接觸到很多了。下面為大家總結(jié)一下,供大家參考。

1.跟蹤頁面執(zhí)行

設(shè)置斷點(diǎn)是頁面調(diào)試過程中的常用手段,除此之外,還可以通過查看頁面的跟蹤信息進(jìn)行錯誤排查以及性能優(yōu)化。ASP.NET中啟用頁面跟蹤非常方便,只需在Page指令中加入Trace="True"屬性即可:

 

  1. <%@ Page Language="C#" Trace="true"

跟蹤信息可以分為兩類:

a.頁面執(zhí)行詳細(xì)情況

其中主要包括頁面生命周期中各事件列表、控件樹列表(可以查看每個控件的HTML字節(jié)數(shù)以及ViewState字節(jié)數(shù))、Session狀態(tài)、Application狀態(tài)、Cookie集合、QueryString集合、服務(wù)器變量等信息。

b.自定義跟蹤信息

通過在頁面代碼中調(diào)用Trace.Write()或Trace.Warn()方法便可將指定內(nèi)容寫入跟蹤信息中的"Trace Information"節(jié)。就算頁面發(fā)生了錯誤,跟蹤信息還是會顯示出來,并且在發(fā)布應(yīng)用程序時無需刪除相關(guān)的跟蹤代碼,只需從Page指令中移除Trace屬性即可。

2.在服務(wù)器端控件中添加客戶端屬性

我們有時會向服務(wù)器端控件中添加一些特殊的屬性,這類屬性不需要服務(wù)器端的處理,只需簡單的發(fā)送至客戶端即可,我們不妨稱其為客戶端屬性,例如HTML屬性或自定義屬性(可能用于實(shí)現(xiàn)某種特定的JavaScript功能)。可以通過以下幾種方法達(dá)到這個目的:

a.直接向控件添加客戶端屬性

 

  1. <this.style.cursor='pointer'" runat="server" /> 

其中的onmouseover是客戶端屬性,注意,編譯器是允許這種寫法的,但會顯示警告。

b.調(diào)用內(nèi)置方法

可以通過調(diào)用WebControl.Attributes.Add()方法為控件添加客戶端屬性,如下所示:

 

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

這也是最常用的方法。

c.創(chuàng)建自定義控件

如果某個類型的服務(wù)器端控件中經(jīng)常需要添加客戶端屬性,則可以考慮創(chuàng)建一個繼承自該服務(wù)器端控件的自定義控件,其中包含特定的客戶端屬性。

正是考慮到這一點(diǎn),ASP.NET 2.0中為按鈕控件(包括Button、LinkButton、ImageButton控件)提供了OnClientClick屬性,可以這樣寫:

 

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

真是貼心的功能!

3.表單數(shù)據(jù)的服務(wù)器端驗(yàn)證

將數(shù)據(jù)驗(yàn)證任務(wù)從服務(wù)器端遷移到客戶端的過程促使了JavaScript的產(chǎn)生,這也是我們沿用至今的一種方式。但只有在保證客戶端JavaScript正常運(yùn)行的前提下,這種方式才能發(fā)揮其作用。

不幸的是,總有一些例外,比如瀏覽器不支持JavaScript,或者用戶刻意關(guān)閉了瀏覽器的JavaScript功能,這就導(dǎo)致了***重防護(hù)失效。比較保險(xiǎn)的做法是加入第二重防護(hù),即對用戶提交的數(shù)據(jù)進(jìn)行服務(wù)器端驗(yàn)證,但這無疑將增加開發(fā)者的工作量。

ASP.NET 2.0提供了一系列表單數(shù)據(jù)驗(yàn)證控件,可以非常輕松的完成客戶端及服務(wù)器端的雙重?cái)?shù)據(jù)驗(yàn)證任務(wù)。但要使服務(wù)器端驗(yàn)證功能發(fā)揮作用,還需要用到Page.IsValid屬性,請看下面的例子:

姓名:

  1. ator ID="RequiredFieldValidator1" ControlToValidate="txtName"   
  2. ErrorMessage="請?zhí)顚懶彰?quot; Display="Dynamic" runat="server"

這是一個HTML片段,其中有一個RequiredFieldValidator控件用于檢查是否已填寫姓名。下面是點(diǎn)擊按鈕時執(zhí)行的服務(wù)器端代碼:

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

其中,要特別注意對Page.IsValid屬性的判斷,只有頁面中所有驗(yàn)證控件對數(shù)據(jù)的驗(yàn)證都成功時,Page.IsValid屬性才為True,這代表提交的數(shù)據(jù)為有效數(shù)據(jù),可以進(jìn)入下一步操作。

4.跳過表單驗(yàn)證

在某些情況下,我們需要跳過表單中所有控件的驗(yàn)證,然而在另外一些情況下,我們卻希望有選擇的觸發(fā)表單中某些控件的驗(yàn)證功能。分別來看看這兩種情況:

a.跳過所有驗(yàn)證

假設(shè)有個表單,其中除了各種數(shù)據(jù)錄入控件外還有兩個按鈕,一個是提交按鈕,另一個是取消按鈕,同時表單中還有一些數(shù)據(jù)驗(yàn)證控件。我們希望當(dāng)點(diǎn)擊取消按鈕的時候無需驗(yàn)證表單中數(shù)據(jù)的有效性,而是直接將頁面提交至服務(wù)器并將其重定向到某個指定頁面。

要實(shí)現(xiàn)這個功能,可以利用按鈕控件(包括Button、LinkButton、ImageButton控件)的CausesValidation屬性,將該屬性設(shè)為false即可跳過表單中的所有驗(yàn)證。

b.觸發(fā)某些驗(yàn)證

假設(shè)有個表單,被劃分成兩個功能區(qū),一個用于用戶登錄,另一個用于用戶注冊,我們希望當(dāng)點(diǎn)擊登錄按鈕時只觸發(fā)登錄區(qū)的數(shù)據(jù)驗(yàn)證,當(dāng)點(diǎn)擊注冊按鈕時只觸發(fā)注冊區(qū)的數(shù)據(jù)驗(yàn)證。

解決辦法是將相關(guān)的數(shù)據(jù)驗(yàn)證控件和數(shù)據(jù)提交控件(按鈕控件)加入同一個驗(yàn)證組,這一點(diǎn)是通過將各相關(guān)控件的ValidationGroup屬性設(shè)為相同的值來實(shí)現(xiàn)的。

5.保持滾動條位置

假設(shè)有個頁面,其中以列表形式顯示了一些數(shù)據(jù)記錄,每次編輯其中的記錄時都需要向服務(wù)器提交頁面,為了提供良好的用戶體驗(yàn),我們希望每次編輯一條記錄并保存后,滾動條位置都能保持不變。傳統(tǒng)的做法是每次提交頁面時將當(dāng)前滾動條所在位置信息按某種方式(Hidden字段或QueryString)傳給服務(wù)器端,當(dāng)頁面返回客戶端時,由服務(wù)器端根據(jù)傳入的位置信息以JavaScript形式重新設(shè)置滾動條位置。

如果通過ASP.NET來實(shí)現(xiàn)這一功能將變得非常簡單,只需在Page指令中加入MaintainScrollPositionOnPostback="true"屬性即可:

 

  1. <%@ Page Language="C#" MaintainScrollPositionOnPostback="true"

6.禁用不必要的ViewState

在ASP.NET的運(yùn)行機(jī)制中,ViewState起著重要的作用。ViewState經(jīng)過編碼后存入表單Hidden字段,每當(dāng)頁面回傳至服務(wù)器時再進(jìn)行解碼。因此,ViewState的使用會帶來兩個問題:帶寬的占用以及計(jì)算資源的消耗。好在不是所有控件都需要啟用ViewState,我們完全可以禁用不必要的ViewState。

ViewState默認(rèn)是開啟的,需要手動關(guān)閉:

a.禁用頁面ViewState

在Page指令中加入EnableViewState="false"屬性即可:

 

  1. <%@ Page Language="C#" EnableViewState="false"

加入這個屬性后,整個頁面以及其中的所有控件都將無法使用ViewState,因此需謹(jǐn)慎使用。

b.禁用控件ViewState

這是推薦的方式,將控件的EnableViewState屬性設(shè)為False即可禁用其ViewState,這里有個簡單的竅門:

如果某個控件的狀態(tài)不能由操作者改變,則可以禁用其ViewState。最典型的莫過于Label控件了,只能顯示信息,無法操作。

但TextBox、DorpDownList等控件的狀態(tài)是可以改變的(通過輸入、選擇等操作),因此保留他們的ViewState還是有用的。

希望本文介紹的關(guān)于asp.net實(shí)用技巧的六方面,能夠給你帶來幫助。

【編輯推薦】

  1. ASP.Net中頁面之間傳參方法
  2. ASP.NET中g(shù)et方法和post方法的區(qū)別
  3. 淺談ASP.NET中render方法
  4. ASP.NET網(wǎng)站性能優(yōu)化 需要考慮哪些方面
  5. asp.net開源CMS匯總
責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-01-03 09:34:30

ASP.NET.NET性能優(yōu)化

2009-07-24 11:25:15

asp.net編程

2009-12-18 16:51:41

ASP.NET概述

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2011-07-04 15:33:15

ASP.NET

2009-12-23 13:42:08

ASP.NET事務(wù)

2011-07-13 08:58:51

ASP.NET

2009-07-24 12:14:17

asp.net技巧

2009-07-21 10:40:36

ASP.NET Pro

2009-07-27 17:00:29

ASP.NET主機(jī)

2009-07-29 09:14:36

ASP.NET網(wǎng)站

2009-07-29 10:02:49

ASP.NET上傳

2009-07-29 17:26:39

ASP.NET頁面

2009-07-23 14:17:41

2009-07-20 16:12:21

ASP.NET Fra

2009-09-10 14:02:08

LINQ ASP.NE

2009-08-19 09:23:40

ASP.NET Rou

2009-07-22 16:05:34

ASP.NET AJA

2009-07-29 17:23:17

ASP.NET表單

2010-01-14 10:18:24

VB.NET List
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號