從ASP遷移至ASP --最初的考慮(二)_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:如何實現Asp與Asp.Net共享Session
      在.net中,Session的存儲機制已經與Asp的存儲機制不一樣,雖然可以在同一個IIS下同時運行asp與aspx,但是它們之間不能傳遞Session。之前大批系統應用到了asp,在升級過程中,如果完全拋棄asp來

      運用和在一個單獨模塊中創建一個普遍性的連接相同的構想,我們創建了一個Pagelet。Pagelet使開發人員可以創建偽控件,偽控件和對象一樣可以用來顯示屬性,方法以及事件。我們的方案是:創建一個顯示ConnectToDB方法的Pagelet,該方法返回一個ADOConnection對象(與ADO的語法稍有不同)。我們用下面的代碼創建Pagelet,將它存為connect.aspc(擴展名表明它是一個Pagelet)

         < %@ Import Namespace="System.Data" %>

         < %@ Import Namespace="System.Data.ADO" %>

         < script language="VB" runat="server">

         Public Function ConnectToDB() As ADOConnection

         ConnectToDB = New ADOConnection("DSN=evilleDSN")

         End Function

         < /script>

      你會注意到我們導入了兩個Namespaces,即System.Data和System.Data.ADO。為了使用ADO Managed Provider這些Namespaces是必須的。許多人就此問了我許多問題,因為目前多數示例都使用基于Microsoft SQL Server 2000數據庫的SQL Managed Provider。對于非SQL Server 數據庫,ASP 可以使用ADO Managed Provider,這和目前你在程序中使用ADO的方式大致相同。導入Namespaces和在VB程序中創建參考(Reference)有異曲同工之妙。

      Pagelet的運用使我可以維護當前的站點計劃,一旦在模塊中創建了連接,我們就可在任何需要的地方重用模塊。這意味著我們需要用Pagelet的一個實例來替代Include文件指令,然后當我們需要數據庫連接時調用ConnectToDB方法。在需要使用Pagelet的頁面中,我們首先必須使用ASP 指令將之與該頁面注冊(register)。在指令中,我們定義TagPrefix,TagName,以及Source(src)。與ASP中的include文件類似,在我們放置Pagelet的地方要用到TagPrefix和TagName。

         < %@ Register TagPrefix="seven" TagName="Connect"

         src=http://www.alixixi.com/Dev/Web/ASP/asp_1/2007/"_includes/connect.aspc" %>

      放置我們剛注冊的Pagelet的方法與ASP 服務器控件類似:

         < [TagPrefix]:[TagName] id=myPagelet runat=server />

      比如:

         < seven:Connect id=Connect runat=server />

      在ADO 中,記錄集(Recordset)的概念被DataSets和DataViews的組合所取代。一會兒我們將討論這兩個概念。首先讓我們看看在default.asp頁面遷移至default.aspx(ASP 頁面的后綴)后代碼都有了哪些改變。先看default.asp:

         < !-- #include file="_includes/connect.inc" -->

         < %

         Dim cnEville_DB, rsUpcoming, strSqlUpcoming

         Set rsUpcoming = Server.CreateObject("ADODB.Recordset")

         strSqlUpcoming = " SELECT TOP 2 " & _

         "Classes.Title, Sessions.Session_ID, " & _

         "Sessions.Special, Classes.Description " & _

         "FROM Classes INNER JOIN Sessions ON " & _

         "Classes.Class_ID = Sessions.ClassID " & _

         "WHERE (((Sessions.Date)>Date())) " & _

         "ORDER BY Sessions.Date"

         rsUpcoming.Open strSqlUpcoming,cnEville_DB

         %>

         在ASP 中成了default.aspx:

         < %@ Import Namespace="System.Data" %>

         < %@ Import Namespace="System.Data.ADO" %>

         < %@ Register TagPrefix="seven" TagName="Connect" &_

         src=http://www.alixixi.com/Dev/Web/ASP/asp_1/2007/"_includes/connect.aspc" %>

         < script language="vb" runat=server>

         Sub Page_Load(Source As Object, E As EventArgs)

         Dim dscUpcoming As ADODataSetCommand

         Dim dsUpcoming As New DataSet

         Dim strSQL As String

         strSQL = "SELECT TOP 2 Classes.Title," & _

         "Sessions.Session_ID, Classes.Description " & _

         "FROM Classes INNER JOIN Sessions ON " & _

         "Classes.Class_ID = Sessions.ClassID " & _

         "WHERE (((Sessions.Date)>Date())) " & _

         "ORDER BY Sessions.Date"

         dscUpcoming = New ADODataSetCommand(strSQL, Connect.ConnectToDB())

         dscUpcoming.FillDataSet(dsUpcoming, "Upcoming")

         End Sub

         < /script>

      數據訪問的核心,ANSI-SQL語句在轉換后沒有什么

      分享:ASP.NET2.0的控件狀態和視圖狀態探討
      基本概念 控件狀態-為了讓控件正常工作,有時需要存儲控件狀態數據。例如,如果編寫了一個自定義控件,其中具有顯示不同信息的不同選項卡,為使該控件如預期一樣工作,控件需要知道在往返過

      來源:模板無憂//所屬分類:ASP教程/更新時間:2008-08-22
      相關ASP教程