ASP.NET學習總結

來源:互聯網
上載者:User
asp.net

一、ASP.NET頁面的處理順序

  ASP.NET頁面是由事件來驅動的,首先執行的是Init事件,在代碼中,系統自動增加了一個OnInit的重載函數,從而在頁面Init的時候就執行這個OnInit函數。在這個函數中,會執行InitializeComponent函數,這個函數裡就有很多控制項事件的代理函數,展開一個頁面的"Web FormDesigner Generated Code",我們就可以看見這些。

  頁面在執行完Init之後,就是Load事件,對應的代碼就是Page_Load。
  然後就是引起頁面返回的事件的代碼,當然,如果頁面是第一次啟動並執行話,就沒有這一步了。
  也就是說,頁面每次重新整理的時候都會執行Page_Load函數,這也就是為什麼有些代碼要寫在
    if (!Page.IsPostBack)
    { ... }
  中的原因。比如有一個文字框,如果在Page_Load中設定初始值,放在哪兒呢?如果放在if外面,那每次重新整理的時候都會執行這個指派陳述式,即使在頁面中修改了文字框的值,在返回之後仍然會消失,但是如果放在if之中,那就可以了,返回之後文字框中仍然是先前的值。
  很多朋友的DataGrid無法擷取編輯後的值,也可能就是這個原因。

二、JavaScript在頁面中的應用

  雖然ASP.NET採用新的運行機制,但是最後產生的還是能被一般瀏覽器識別的HTML和JavaScript代碼。

  在頁面中,仍然可以通過Response.Write來寫出一段JS代碼,比如要彈出一個新的瀏覽器視窗,可以用Response.Write(@"<script language=JavaScript>window.open('url');</script>");

  在Web控制項中,Attributes屬性集合也和JS聯絡緊密。新增加的一個Attributes元素就對應Web控制項最後產生的HTML代碼的一個屬性或者事件。

  比如有一個TextBox,要求我們在它獲得焦點的時候選中全部的文本,我們就可以這樣處理:TextBox1.Attributes["onFocus"]="javascript:this.select();";通過在IE中查看頁面的原始碼,我們可以看到這樣的一段:<input type=text...>,至於是什麼意思就不用我解釋了吧。

  另外還有一個應用,如果有一個Button,它的Click事件中有很多對資料庫的一些操作,我們要求使用者在按了這個Button之後確認一次(這有點想ASP中的MsgBox),現在我們就可以這樣處理:Button1.Attributes["onClick"]="javascript:return confirm('Are your
sure...');";最後的效果如我們想像。

  註:以上代碼在CodeBehind中運行通過。至於代碼與頁面混在一起的情況,在書寫的時候可能會有所不同。

三、關於代碼重用

  ASP.NET已經基本轉向了OO的層面上來,其中的代碼基本都是通過類來執行的。就像我們寫C/S系統一樣,用一個或者多個Class來儲存公用的函數,然後再在其他函數中調用。

  還有一個方法就是寫到一個基類裡,其他類繼承這個基類。至於用那種方法,那看個人愛好以及函數的處理範圍。

  我前段事件做的一個項目是這樣做的,有兩個基類,一個是中介層的基類,一個是頁面Class的基類(繼承System.Web.UI.Page)。然後把一些資料庫的處理放到前一個基類裡,把頁面控制項的一些常用操作放到後一個基類裡。

四、Web控制項

  有幾個控制項是我們應該有很深的理解的:DataGrid、DataList。這兩個控制項在顯示資料上為我們提供了極大的方便,它們的各種用法,需要我們在實踐中不斷摸索、不斷總結。

  另外,自訂控制項也是一個比較重要的範圍。

  在自訂控制項的類型選擇上,如果你只是一般的顯示一些固有的控制項,而不作屬性、事件的操作,那寫成UserControl會簡單一點,這樣的自訂控制項相當於ASP中通過include執行的代碼。如果你想在設計、運行中修改控制項內部的屬性、得到控制項的某些事件,那最好寫成一個dll檔案,也就是寫成一個類,這樣的控制項可以像一般的Web控制項一樣,用滑鼠拖動大小,設定屬性,擷取事件等。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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