2008年4月28日 星期一

Global.asax文件裡面的事件

Global.asax文件裡面的事件
資料來源:http://www.xmlasp.net/n1247c12.aspx

Global.asax檔繼承自HttpApplicatio類別,它維護一個HttpApplication Object Spool,並在需要時將Spool中的物件分配給應用程式。Global.asax 檔包含以下事件:

‧ Application_Init:在應用程式被實例化或第一次被調用時,該事件被觸發。對於所有的HttpApplication物件實例,它都會被調用。
‧ Application_Disposed:在應用程式被銷毀之前觸發。這是清除以前所用資源的理想位置。
‧ Application_Error:當應用程式中遇到一個未處理的異常時,該事件被觸發。
‧ Application_Start:在HttpApplication 類的第一個實例被創建時,該事件被觸發。它允許你創建可以由所有HttpApplication 實例訪問的物件。
‧ Application_End:在HttpApplication 類的最後一個實例被銷毀時,該事件被觸發。在一個應用程式的生命週期內它只被觸發一次。
‧ Application_BeginRequest:在接收到一個應用程式請求時觸發。對於一個請求來說,它是第一個被觸發的事件,請求一般是用戶輸入的一個頁面請求(URL)。
‧ Application_EndRequest:針對應用程式請求的最後一個事件。
‧ Application_PreRequestHandlerExecute:在 ASP.NET 頁面框架開始執行諸如頁面或 Web 服務之類的事件處理程式之前,該事件被觸發。
‧ Application_PostRequestHandlerExecute:在 ASP.NET 頁面框架結束執行一個事件處理程式時,該事件被觸發。
‧ Applcation_PreSendRequestHeaders:在 ASP.NET 頁面框架發送 HTTP 頭給請求客戶(流覽器)時,該事件被觸發。
‧ Application_PreSendContent:在 ASP.NET 頁面框架發送內容給請求客戶(流覽器)時,該事件被觸發。
‧ Application_AcquireRequestState:在 ASP.NET 頁面框架得到與當前請求相關的當前狀態(Session 狀態)時,該事件被觸發。
‧ Application_ReleaseRequestState:在 ASP.NET 頁面框架執行完所有的事件處理程式時,該事件被觸發。這將導致所有的狀態模組保存它們當前的狀態資料。
‧ Application_ResolveRequestCache:在 ASP.NET 頁面框架完成一個授權請求時,該事件被觸發。它允許緩存模組從緩存中為請求提供服務,從而繞過事件處理程式的執行。
‧ Application_UpdateRequestCache:在 ASP.NET 頁面框架完成事件處理程式的執行時,該事件被觸發,從而使緩存模組存儲回應資料,以供回應後續的請求時使用。
‧ Application_AuthenticateRequest:在安全模組建立起當前用戶的有效的身份時,該事件被觸發。在這個時候,用戶的憑據將會被驗證。
‧ Application_AuthorizeRequest:當安全模組確認一個用戶可以訪問資源之後,該事件被觸發。


‧ Session_Start:在一個新用戶訪問應用程式 Web 站點時,該事件被觸發。
‧ Session_End:在一個用戶的會話超時、結束或他們離開應用程式 Web 站點時,該事件被觸發。

更詳細的內容,請參閱下面的文章
資料來源:http://www.xmlasp.net/n1247c12.aspx

[MSDN] VB語法大全,能上網就能用

[MSDN] VB語法大全,能上網就能用
全都是正體中文的說明
VB語法,依照英文列表:http://msdn2.microsoft.com/zh-tw/library/2f43da0y(VS.80).aspx
資料型態:http://msdn2.microsoft.com/zh-tw/library/47zceaw7(VS.80).aspx
常用的VB函式,依照英文列表:http://msdn2.microsoft.com/zh-tw/library/32s6akha(VS.80).aspx

使用 Using...End Using區塊來寫程式,要非常小心!

使用 Using...End Using區塊來寫程式,要非常小心!http://msdn2.microsoft.com/zh-tw/library/htd05whh(VS.80).aspx

不要忽略了裡面可能發生的危機。
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1417995&SiteID=14
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3225947&SiteID=14

以下是一個簡單的程式。以資料庫連結來說(變數名稱Conn)。我寫了一小段程式來觀察,如下面的紅字。
Using區塊的確會自動幫我們關閉,完成這兩件事。Conn.Close()與Conn.Dispose()
但其他物件,我就不確定。例如:DataReader的 .Close():


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim SQLstr As String = "SELECT top 5 * From test"
Dim Conn As New SqlConnection("DB_ConnectionString")
Dim cmd As New SqlCommand(SQLstr, Conn)

Using Conn
Conn.Open() '==第一,連結資料庫
'==第二,設定SQL指令****(巢狀 Using)****==
Using dr As SqlDataReader = cmd.ExecuteReader()
'==第三,自由發揮,將資料呈現在畫面上==
'---- 把DataReader獲得的資料,跟GridView控制項繫結(.DataBind())在一起。
'---- GridView控制項就會自動把資料展現在畫面上了。
GridView1.DataSource = dr GridView1.DataBind()

cmd.Cancel()
dr.Close()
End Using '-- 處置DataReader****(巢狀 Using)****

End Using '==第四,關閉資源&資料庫的連線==
'—註解:資料庫連線(Conn)會「自動關閉」。因為它是由 Using來開啟,End Using會自動關閉之。
Response.Write( Conn.State)
End Sub

跨網頁公佈 Cross-Page Posting

跨網頁公佈 Cross-Page Posting

我在A網頁,要輸入日期。
按下日曆,就會跳出一個新網頁B。
在B網頁典選的日期,會自動填回A網頁裡面。
以前常常會用到這樣的功能,請看這篇文章--ASP.NET父子視窗的應用,利用子視窗的Gridview選取一個值,傳回父視窗

依照微軟的作法,ASP.NET可以使用 Cross-Page Posting (跨網頁公佈)
完全不需要用到 JavaScript就能完成喔。
請參考下面的中文文章 ^_^
http://msdn2.microsoft.com/zh-tw/library/ms178139.aspx

點部落的這篇文章也是不錯。http://www.dotblogs.com.tw/dotjum/archive/2008/04/28/3521.aspx