服務(wù)熱線
153 8323 9821
.net 開發(fā) wap 網(wǎng)站
即將到來的 3G 技術(shù),將使得移動設(shè)備突破現(xiàn)在的帶寬限制,這樣我們就可以構(gòu) 建出許多新穎且功能強大的移動應(yīng)用。 現(xiàn)在已經(jīng)有許多商業(yè)應(yīng)用都開始向移動設(shè) 備上進行遷移,所以對開發(fā)者來說,現(xiàn)在就開始移動開發(fā)的學(xué)習(xí)將是一種非常適 合的時機。 在本文中我將介紹如何使用 Visual Studio 2005 創(chuàng)建一個 ASP.NET 2.0 移 動程序,然后介紹一些常用的移動開發(fā)控件并以適合的方式在程序中加于應(yīng)用, 最后將談?wù)勅绾伍_發(fā)針對特定移動設(shè)備的 WEB 程序和管理程序中的 ViewState(視圖狀態(tài))和 Session。 創(chuàng)建一個新的 ASP.NET 移動 WEB 程序 Visual Studio 2005 提供了一組功能強大且友好的開發(fā)工具來創(chuàng)建移動 WEB 程序,如果你已經(jīng)有創(chuàng)建傳統(tǒng)的 ASP.NET 應(yīng)用程序的經(jīng)驗,那么你就會發(fā)現(xiàn)創(chuàng)建 移動 WEB 程序和創(chuàng)建傳統(tǒng)的 ASP.NET 應(yīng)用程序是非常類似的。 你只需要創(chuàng)建一個 ASP.NET 網(wǎng)站項目并添加一些移動 WEB 窗體即可。當你添加移動 WEB 窗體后,你 就會發(fā)現(xiàn)在工具箱中添加了如下圖所示的 ASP.NET 移動控件。
現(xiàn)在你可以按照如下的步驟在 Visual Studio 2005 創(chuàng)建一個新的 ASP.NET 移動 WEB 程序: 1. 選擇"文件"-"新建"-"網(wǎng)站" 2. 在"Visual Studio 已安裝的模板"列表中選擇"ASP.NET 網(wǎng)站" 3. 設(shè)置好程序的"位置"、"語言"和"路徑"等選項后,單擊"確定"按鈕。
當你完成上述步驟后,就已經(jīng)創(chuàng)建好了一個 ASP.NET 網(wǎng)站。現(xiàn)在我們就可 以在該網(wǎng)站中添加一些針對移動設(shè)備的 WEB 窗體,其具體的實現(xiàn)過程如下: 1. 在 Visual Studio 2005 的"解決方案資源管理器"窗口中選擇剛才創(chuàng)建好 的網(wǎng)站項目,右鍵點擊并在彈出的菜單中選擇"添加新項"命令。 2. 在彈出的"添加新項"窗體中選擇"移動 WEB 窗體"項。 3. 設(shè)置窗體的"名稱"和"語言"等項,并且確保"將代碼放在單獨的文件中" 選擇框處于選中狀態(tài)。 4. 單擊"添加"按鈕。
當單擊"添加"按鈕后,你會發(fā)現(xiàn) Visual Studio 2005 自動添加了兩個文件, 在這里窗體名稱被設(shè)置為"MobileDefault",因此這兩個文件分別為 MobileDefault.aspx 和 MobileDefault.aspx.cs (如果你選擇的語言為 VB 的 話,則這兩個文件為 MobileDefault.aspx 和 MobileDefault.aspx.vb)。 MobileDefault.aspx 文件包含在窗體使用的各個 ASP.NET 移動控件的聲明方 式,而 MobileDefault.aspx.cs 則包含了一些程序?qū)崿F(xiàn)代碼和事件處理代碼,這 和傳統(tǒng)的 ASP.NET 應(yīng)用程序采用的"代碼后置"的方式是一致的。 窗體添加完畢后, 我們就可以使用工具箱中的"移動 WEB 窗體"標簽下的各個 控件。如同其它的 ASP.NET 控件一樣,我們也可以根據(jù)需求設(shè)置這些控件的屬性 和事件行為。你可以在"原代碼"窗口下直接輸入"<mobile: />"的語法方式來 添加移動控件: <mobile:TextBox ID="MyTextBox" runat="server">< /mobile:TextBox> <mobile:Label ID="MyLabel" runat="server">標簽控件< /mobile:Label> 下圖顯示了一個放置了 Label、TextBox 和 Command 控件的移動 WEB 窗體。 該窗體所實現(xiàn)的功能是根據(jù) TextBox 控件中輸入的 CustomerID 來查找相應(yīng)的用 戶信息,我們并沒有編寫對應(yīng)的邏輯代碼,只是顯示了該窗體的界面:
Visual Studio 2005 中對應(yīng)的 HTML 代碼如下所示,我們可以看到上述的 3 個控件均以 <mobile: 為前綴在頁面代碼中進行了聲明。同樣的,F(xiàn)orm 也采用 了類似的方式加以聲明,見代碼 7 所示。在傳統(tǒng)的 ASP.NET 應(yīng)用程序中處理窗體 和處理控件的方式是不一樣的,這和移動 WEB 頁面有很大的差別。其最大的不同 就是開發(fā)人員可以在同一個移動 WEB 頁面中創(chuàng)建多個窗體, 并且可以在這些窗體 間自由地導(dǎo)航而無需回發(fā)到服務(wù)器。 利用該項特性可以減少因移動設(shè)備帶寬小而 帶來的約束,大大減少了和服務(wù)器通訊的數(shù)據(jù)量。換句話說,移動設(shè)備中是以窗 體為單位進行顯示,而不是像傳統(tǒng)的 ASP.NET 程序那樣以頁面為單位進行顯示。 我們使用移動設(shè)備瀏覽不同屏的信息時,可能并沒有跳轉(zhuǎn)到不同的頁面,而是在 同一個頁面的不同窗體間進行跳轉(zhuǎn)。 01 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MobileDefault.aspx.cs" 02 Inherits="MobileDefault" %> 03 <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" 04 Assembly="System.Web.Mobile" %> 05 <html xmlns="http://www.w3.org/1999/xhtml" > 06 <body> 07 <mobile:Form id="Form1" runat="server"> 08 <mobile:Label id="lblID" Runat="server">Customer ID< /mobile:Label> 09 <mobile:TextBox id="txtCustID" Runat="server">< /mobile:TextBox> 10 <mobile:Command id="cmdGetCustomer" Runat="server">Find Customer 11 </mobile:Command> 12 </mobile:Form> 13 </body> 14 </html> ASP.NET 移動 WEB 窗體的開發(fā)視圖 Visual Studio 2005 的開發(fā)環(huán)境中提供 了三種視圖進行 ASP.NET 移動 WEB 窗體的設(shè)計和開發(fā)。這三種視圖分別為設(shè)計 視圖、HTML 視圖和代碼視圖,我們可以針對不同的開發(fā)需求在這些視圖間進行
切換?,F(xiàn)在我們就這三種視圖進行一個簡短的概要。 設(shè)計視圖 設(shè)計視圖狀態(tài)下將加載移動 WEB 窗體, 并且自動呈現(xiàn)窗體中所包含的移動控 件。你可以從工具箱中以拖拽的方式添加新的控件,你也可以通過屬性窗口修改 已存在的控件的屬性。如果想要移除窗體中的某些控件的話,你可以點選該控件 并使用"Delete"鍵進行刪除。 注意,ASP.NET 移動 WEB 窗體的設(shè)計視圖并不是一個"可見即可得"的編輯 器,這是因為不同的移動設(shè)備其支持的呈現(xiàn)方式是不同的。例如,在設(shè)計視圖狀 態(tài)下通常一行只能放置一個控件,但是在某些設(shè)備上支持在同一行放置多個控 件,因此各個控件將會盡量地停靠在同一行上。正因為如此,我們還需要注意 ASP.NET 移動 WEB 窗體并不支持控件的絕對位置。 在設(shè)計器中, 您可以按照希望控件顯示給用戶的順序?qū)⑺鼈兲砑拥酱绑w或面 板中,但是不能定義當它們呈現(xiàn)在移動設(shè)備的屏幕上時所處的絕對位置。為了適 應(yīng)多種多樣的移動設(shè)備, ASP.NET 移動設(shè)計器使您能夠針對特定設(shè)備自定義移動 Web 窗體頁和控件的外觀。這種靈活性使您可以確保:您的應(yīng)用程序在目標設(shè)備 上具有適用且吸引人的外觀。 HTML 視圖 HTML 視圖狀態(tài)下顯示的是 HTML 源代碼,你可以采用直接編碼的方式設(shè)置移 動控件和窗體的布局。當然我們已經(jīng)很少使用這種方式進行程序的開發(fā),你完全 可以在設(shè)計視圖狀態(tài)下設(shè)置移動控件和窗體的布局,而后 Visual Studio 2005 會自動生成相應(yīng)的頁面代碼。 你可以在 Visual Studio 2005 開發(fā)文檔窗體的底部選擇合適的標簽進行設(shè) 計視圖和 HTML 視圖的切換,如圖中箭頭所示:
代碼視圖 在采用代碼后置的方式下, 我們可以切換到代碼視圖狀態(tài)查看頁面程序的邏 輯代碼。你可以在頁面的空白出單擊右鍵,然后選擇"查看代碼"項就可以切換到 代碼視圖狀態(tài)。 ASP.NET 移動控件的事件處理 和傳統(tǒng)的 ASP.NET 控件一樣,移動控件也可以在特定的狀態(tài)下激發(fā)事件,并 提供了一些默認事件來處理經(jīng)常發(fā)生的方案。除此之外,移動控件也可以在某些 情況下激發(fā)一些其它的處理事件(非默認的事件)。傳統(tǒng)的 ASP.NET 程序中,用戶 通過瀏覽器執(zhí)行某些操作時會激發(fā)相應(yīng)的事件, 移動設(shè)備瀏覽器也采用了類似的 處理方式。我們可以將一個事件通過回發(fā)的方式傳遞到服務(wù)器端,繼而引發(fā)服務(wù) 器端對該事件的處理,最終的處理結(jié)果將以 HTML 的形式傳遞到客戶端瀏覽器。 處理一個由移動控件激發(fā)的默認事件是非常容易的, 我們只需在頁面中放置一個 移動控件并雙擊該控件即可。下面為一個較常見的事件處理代碼,即一旦用戶單 擊命令按鈕就激發(fā)其 Click 事件。 protected void cmdGetCustomer_Click(object sender, EventArgs e) {……} 創(chuàng)建一個非默認的事件處理器也是非常容易的, 我們現(xiàn)在無需考慮語言的相 關(guān)性。如果你曾經(jīng)使用過 Visual Studio 2003 的話,你會發(fā)現(xiàn)用 VB.NET 來處理 事件要比 C#復(fù)雜。在當前的 Visual Studio 版本中已經(jīng)將這兩種語言的操作過 程進行了統(tǒng)一,下面的步驟就是創(chuàng)建一個非默認事件處理器的詳細步驟: 1. 在狀態(tài)視圖中點選要設(shè)置事件的控件。
2. 在屬性窗口中選擇事件按鈕,也就是那個帶有閃電標記的按鈕。單擊后 就會在屬性窗體中顯示控件的所有的可用事件。 3. 雙擊你想處理事件的右側(cè)空白欄,這時將切換到相應(yīng)事件的代碼視圖狀 態(tài)。
使用容器控件 在 ASP.NET 移動 WEB 窗體中提供了兩種容器控件: Form 控件和 Panel 控件。 幾乎所有的移動控件都是放置在這兩種控件之中,唯獨 StyleSheet 控件例外。 StyleSheet 控件可以單獨地放置在頁面中,該控件將會在以后的小節(jié)中進行詳 細的介紹。我們可以將屬于同一組功能的移動控件都放置在一個容器控件中,這 樣使得程序的頁面結(jié)構(gòu)更加的清晰。 我們還可以為一個容器控件設(shè)置特定的樣式 表,所有位于該容器的移動控件將會具有一致性的用戶體驗。注意,在頁面中添 加的容器控件是沒有固定大小的, 因為它將隨著你在其中放置的控件