從Tutorial和QuickStart開始ASP.NET 2.0之旅(1)

來源:互聯網
上載者:User

從Tutorial和QuickStart開始ASP.NET 2.0之旅(1)
範維肖

ASP.NET 2.0現在還是Beta階段,雖然離正式的公布還有一段時間,但是它的許多新的簡便實用的特性已經在微軟的ASP.NET Guid Tour和Tutorial裡展現出來了,我們結合上MSDN,開始這次ASP.NET 2.0之旅吧!

整個進程按照Tutorial來展開,相關的內容主要從Quickstart獲得,加上MSDN的一些相關內容,旨在闡述和分析ASP.NET2.0新的特性、與1.1版本的改進和在Web開發中的閃光之處。

OK,立刻開始吧。在這裡我使用的是VS 2005 Beta 2 CTP Feb. 版本,相關資訊如下
Microsoft Visual Web Developer   55537-000-0000016-00757
SQL Server 2005 Beta
.NET Framework 2.0.50110
當然,使用Express版本的Web Developer和SQL Server也是完全可以的。微軟給出的代碼是用VB.NET的,這裡我們用C#來實現。

首先我們建立一個asp.net工程,在這裡就是New一個新的WebSite。建立對話方塊裡包含了很多東西,像新增加的MasterPage等。這些我們稍後再介紹。在這裡我們要選上把代碼放在單獨的檔案中,因為我們還沒有使用MasterPage,所以這裡不要選擇使用MasterPage項。



建完了後我們看一下目錄的結構是什麼樣的?

The Default.aspx page is automatically put in the web site.  No special project files have been created, and only the files that make the web site itself are required.  Virtually any folder with ASPX pages can be opened as a web site.
Default.aspx自動的被加到目錄下。除了網站自己的內容外沒有添加其他的任何東西。(只有兩個檔案和一個目錄,沒有像1.1中的Web.config , AssemblyInfo.cs和Global.asax等檔案了)

The Default.aspx.vb source file contains the support code for the Default.aspx page, referred to as the "code-behind".  VWD allows you to either store the code-behind in a separate file (like Default.aspx.vb above), or you can store it directly in the the Default.aspx page itself.  It is recommended that you manage your code in a separate source file for production web sites.
Default.aspx.vb檔案包含了Default.aspx需要的代碼,也就是我們所說的“code-behind”模式,VWD(Visual Web Developer的簡稱)允許你把代碼放在單獨的.cs或.vb這樣的檔案中或者是放在Default.aspx內部。不過還是建議放在單獨的檔案中。

[ QuickStart ]
Simplified Code Behind Model (New in 2.0)
簡化的Code-Behind模式

ASP.NET 2.0 introduces an improved runtime for code-behind pages that simplifies the connections between the page and code.In this new code-behind model, the page is declared as a partial class, which enables both the page and code files to be compiled into a single class at runtime. The page code refers to the code-behind file in the CodeFile attribute of the <%@ Page %> directive, specifying the class name in the Inherits attribute. Note that members of the code behind class must be either public or protected (they cannot be private).
在2.0中介紹了一種改進的簡化了使用code-behind頁中頁面和代碼串連的機制。在這種新的code-behind模式中,頁面被聲名為一個partial類,這樣就允許了在運行時動將頁面和代碼檔案編譯成一個單獨的類。在<%@Page%>中使用CodeFile屬性指向頁面的代碼檔案,通過Inherits屬性指明類的名字。需要注意的是code behind類的成員必須是pulic或protected的,換言之,不能是private的。

The advantage of the simplified code-behind model over previous versions is that you do not need to maintain separate declarations of server control variables in the code-behind class. Using partial classes (new in 2.0) allows the server control IDs of the ASPX page to be accessed directly in the code-behind file. This greatly simplifies the maintenance of code-behind pages.
比起1.1版本來,這種簡化的模式的優勢是你不需要在code-behind類中去自己維護code-behind類中伺服器控制項變數的單獨聲名。使用partial類允許ASPX頁面的伺服器控制項的ID直接被code-behind類所訪問。大大簡化了我們的維護。

VWD has intellisense everywhere.  This includes HTML source (including page directives), style pages, code behinds and middle tier logic, your configuration files, and XML files that have a schema reference.  No need to waste time searching through online documentation for the details - it's all at your finger tips.
智能提示隨處可見。包括了中介層邏輯以及設定檔,XML等那些有模式參考的檔案。再也不用為了細節問題去查線上文檔了。(當我敲下<%# Container.Eval()%>時一點intellisense都沒有,剛感到失望的時候發現敲入在括弧裡敲入C就出現了智能提示了,OK,直接敲入.從提示裡找吧!而且提示的內容也補充了很多,像以前為了更好的控制樣式,VS2003裡又沒有CSS標準裡的一些東西,只得自己去改動xml檔案讓智能提示全一點)

You will see that this class has been marked as a Partial class.  Partial classes are new in the .NET v2.0 framework.  A partial class allows you to use multiple class files for the same object.  You will notice that there is very little code in the code behind compared to previous versions of Visual Studio.  All of the initialization logic once present in the code behind is no longer visible because it can be placed into a separate class file.
您可以看到Author_aspx類被標記為partial class。這個是在2.0中新加入的。它允許我們對同一個對象使用多個類。比起以前,這裡面只有很少的代碼。那些初始化的代碼在這裡再也看不到了,因為都被放在一個單獨的類檔案中了。

在注釋裡我們可以看到ASP.NET 2.0裡多了一些過程,通過他們可以更好的控制我們的頁面邏輯
 // Page_Load, Page_AbortTransaction, Page_CommitTransaction,
 // Page_DataBinding, Page_Disposed, Page_Error, Page_Init,
 // Page_Init Complete, Page_Load, Page_LoadComplete, Page_PreInit
 // Page_PreLoad, Page_PreRender, Page_PreRenderComplete,
 // Page_SaveStateComplete, Page_Unload

現在切換到Design視圖,添加如所示的文字,然後拖放一個Label控制項。

雙擊它切換到程式碼檢視,寫上Label1.Text=DateTime.Now.ToString();
其實你連Label1都不用寫全,更好的智能提示會協助我們完成。
OK,我們運行一下看看,這個時候會詢問我們是否要Add a new Web.config file with debugging enabled檔案,點是,繼續。大家可以看到。

現在回來,我們添加一個表格,在Design狀態下選擇Layout-insert table來插入一個一行兩列的表格,切換到程式碼檢視。

From the menu select View and then Document Outline.  A tree view of your HTML document displays.  When you click on a tag within the outline, you are immediately brought to that tag in the HTML source view.
通過Document Outline視圖,我們可以清晰的看到頁面的結構。並且當點擊一個標籤的時候HTML程式碼檢視中會自動轉到這個標籤的位置上。

Place the cursor on one of the HTML tags in the source of your HTML document, such as the TABLE tag.  Use the HTML navigation bar to select the contents of the TABLE tag.  From the menu, select Edit, then Outlining, then Hide Selection.
這裡介紹了一種功能在收縮/展開HTML代碼的方法:把游標放在table標籤上,IDE下方的HTML導航工具列的<table>標記會處於選中的狀態,在它右方的下拉式箭頭處點擊選擇Selection Content將會選中table內的內容,然後點擊菜單Edit-Outlining-Hide Selection就可以將table標籤的內容收縮了。
這個功能很方便,在代碼多的時候組織頁面結構時非常非常非常的有用!!同時,IDE還提供了格式化代碼的能力,盡情的去隨意發揮,即使把代碼搞的亂套了,自己都分辨不清楚如何nested的時候只要選擇Formmat Selection,所有代碼都清晰的縮排展示出來了。

第一篇文章主要是大體介紹一下,中間提到的像Partial這樣的新的東西後面會專門的介紹,當然,有很多內容大家在部落格園或其它的地方都看過的。相關的討論可以去www.alphatom.com

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.