[ASP.NET] 開發ASP.NET Web Form您要瞭解的基礎

  • 23703
  • 0
  • 2016-02-16

[ASP.NET] 開發ASP.NET您要瞭解的基楚

本篇主要是這幾天看了幾則論壇的發問,有感而發的文,就個人觀點而言,

要開發ASP.NET有幾個初學者必須要瞭解的基楚,因此僅就一點點經驗做點分享

(1)什麼是ASP.NET網頁生命週期及生命週期事件,當您不瞭解它時,很多時候就會出現

一堆您認為很莫名的問題,但它其實一點都不奇怪,怎麼說呢?

舉例來說:

  • 為什麼postback後,使用者選的資料會不見?
  • 為什麼postback後,資料庫存的資料不是使用者編輯後的?

諸如此類的問題,問到最後大多會發現,因為開發者把Data bind的動作或是控制項預設值

的設定,寫成如下


protected void Page_Load(object sender, EventArgs e)
{
   radiobutton1.SelectedIndex = 0
}

而一般來說,應該是


protected void Page_Load(object sender, EventArgs e)
{
	if (!IsPostBack)
	{
		radiobutton1.SelectedIndex = 0 
	}
}

 

因為Page_Load事件不管是第一次載入頁面或是postback後載入頁面,都是會被執行,而且

被執行的時間點順序會比控制項的Event來的早,也因此當您未加上IsPostBack的判斷時,

基本上控制項的值或狀態可能早就已經被還原了

 

  • 為什麼動態新增控制項,postback後值會不見了?

更進階一點的,動態加入控制項,要完成這類的設計,您要瞭解ASP.NET網頁生命週期及生命週期事件

,因為您必須自行控制,什麼時機點該把控制項給Create起來,什麼時間點要把資料bind進去

 

(2)什麼是HTML,跟控制項有什麼關係

這個是很多用習慣了太好的IDE開發工具的開發者,或是從視窗介面軟體改開發Web Base軟體開發者

較容易不清楚的地方,在Visual Studio所提供的Web Control方便開發者在開發程式中能即看即所得

,但不管您用了什麼控制項,基本上只要是Web Base的程式,展到瀏覽器來看都它是化成HTML

的Tag去呈現的,所以認識HTML是必備的

 

(3) 控制項ID V.S Client ID

舉例來說:

  • 為什麼用JavaScript會出現物件null的訊息?

上面提到由於Web Base的程式,展到瀏覽器來看都它是化成HTML,所以基本上也避免不了您可能會使

用到JavaScript或jQuery等語言,來控制一些網頁上的動作,JavaScript或jQuery必須透過操控DOM裡的物

件來進行的,要取得該物作則必得知它的ID值,但初學者容易混肴的是,以為控制項在IDE開發工項設計階段

中所給予的ID值,指的就是DOM裡物件的ID值,其實不對,一般來說對於JavaScript或jQuery在前端網頁

操控中要用到的ID值,會把它稱為Client ID,在設計階段,我們也可以用控制項.ClientID語法來取得


this.TextBox1.ClientID

image

image

 

(4) 學會FindControl

舉例來說:

  • 如何找到同一筆資料列的控制項?
  • ListView如何取得裡面LinkButton的值?
  • 如何取Gridview裡面的物件?

FindControl應該是滿常使用到的,尤其是在當有使用到容器性質的控制項時,例如:GridView、

DataList等,關於FindControl可以參考之前所發的一篇文章『透析FindControl

 

(5) 學著用DataBase類別庫,別太依賴精靈

這個老實說不知道是不是學校教科書的問題,常會看到一些剛入門的初學者,僅知道如何利用IDE開

發工具(例如:Visual Studio)所提供的精靈,建立與資料庫溝通的程式,但從不懷疑它背後做了哪些

事情又或是在程式碼裡增加了哪些東西,而很不幸的是,當遇上了進階一點的需求,無法由工具所以

的精靈來完成時,就不知道如何跟資料庫溝通了,所以建議別太依賴這些工具精靈,學會使用相關的

DataBase類別庫,例如:System.Data.SqlClient,才是王道啊!

 

(6) 控制項事件

舉例來說:

  • 為什麼事件沒有反應?

很吊軌的是,最近看了幾個問題,發問者將網友所提供程式碼,貼回自己的程式裡時,卻說還是沒有反

應,搞到最後才發現,初學者並不知道那是控制的事件程式碼,或是不知道那叫做事件,僅僅貼回程式碼

,並未在控制項本身進行相關的連結設定(圖3),那當然是不會有作用的。

在使用控制項時除了設定屬性之外,再來就是事件了,開發者可透過控制項所提供的事件,自訂一些

相關的程式邏輯或是想做的事情,在Visual Studio開發工具裡,可以透過在aspx頁面選擇控制項,

按右鍵/屬性/切換到事件頁簽(有"閃電符號"的那頁),即可瀏覽控制項發行的事件,並選擇您想要

處理的事件點二下,即自動加入空的事件處理常式方法和程式碼,至於每個控制項到底有哪些事件呢?

請至MSDN自行查閱囉。

image

image

image

 

 結語:

其實歸咎原因根本,大部份是基礎並不了解,或許有時是為了交學校專題之類,但如果真的想走

這個行業,最好還是從根本打起吧,雖然邊做邊學也是一種學習方式,但基本東西如果不求先了

解,邊做邊學也僅是拼拼湊湊而已

 

最後要推薦一下91哥以前發表過的一系列ASP.NET基礎學習文章『ASP.NET由淺入深系列

 

 

 

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18