自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET移動(dòng)開發(fā)入門基礎(chǔ)

開發(fā) 后端
這篇文章向您介紹如何進(jìn)行ASP.NET移動(dòng)開發(fā),使用Visual Studio 2005創(chuàng)建一個(gè)ASP.NET 2.0移動(dòng)程序和ASP.NET 移動(dòng)控件的事件處理。

隨著硬件的飛速發(fā)展,移動(dòng)設(shè)備也如同計(jì)算機(jī)設(shè)備一樣呈現(xiàn)出具有更好的性能、更快的處理速度和更便宜的趨勢(shì)。尤其是即將到來的3G技術(shù),將使得移動(dòng)設(shè)備突破現(xiàn)在的帶寬限制,這樣我們就可以構(gòu)建出許多新穎且功能強(qiáng)大的移動(dòng)應(yīng)用。現(xiàn)在已經(jīng)有許多商業(yè)應(yīng)用都開始向移動(dòng)設(shè)備上進(jìn)行遷移,所以對(duì)開發(fā)者來說,現(xiàn)在就開始ASP.NET移動(dòng)開發(fā)的學(xué)習(xí)將是一種非常適合的時(shí)機(jī)。

當(dāng)然我不可能在這例用簡(jiǎn)短的篇幅里探討所有的用ASP.NET移動(dòng)開發(fā)應(yīng)用的詳細(xì)過程。這篇文章將介紹一些基礎(chǔ)的知識(shí),這樣使得你對(duì)用ASP.NET 2.0技術(shù)來開發(fā)移動(dòng)應(yīng)用有個(gè)大概的了解,以便你快速地深入該項(xiàng)技術(shù)。首先我們將學(xué)習(xí)如何使用Visual Studio 2005創(chuàng)建一個(gè)ASP.NET 2.0移動(dòng)程序,然后介紹一些常用的移動(dòng)開發(fā)控件并以適合的方式在程序中加于應(yīng)用,最后你將學(xué)習(xí)的是如何開發(fā)針對(duì)特定移動(dòng)設(shè)備的WEB程序和管理程序中的ViewState(視圖狀態(tài))和Session。

創(chuàng)建一個(gè)新的ASP.NET 移動(dòng)WEB程序

Visual Studio 2005提供了一組功能強(qiáng)大且友好的開發(fā)工具來創(chuàng)建移動(dòng)WEB程序,如果你已經(jīng)有創(chuàng)建傳統(tǒng)的ASP.NET應(yīng)用程序的經(jīng)驗(yàn),那么你就會(huì)發(fā)現(xiàn)創(chuàng)建移動(dòng)WEB程序和創(chuàng)建傳統(tǒng)的ASP.NET應(yīng)用程序是非常類似的。你只需要?jiǎng)?chuàng)建一個(gè)ASP.NET網(wǎng)站項(xiàng)目并添加一些移動(dòng)WEB窗體即可。當(dāng)你添加移動(dòng)WEB窗體后,你就會(huì)發(fā)現(xiàn)在工具箱中添加了如下圖所示的ASP.NET移動(dòng)控件。

ASP.NET 移動(dòng)WEB程序

現(xiàn)在你可以按照如下的步驟在Visual Studio 2005創(chuàng)建一個(gè)新的ASP.NET移動(dòng)開發(fā)的WEB程序:

1. 選擇"文件"-"新建"-"網(wǎng)站"

2. 在"Visual Studio已安裝的模板"列表中選擇"ASP.NET 網(wǎng)站"

3. 設(shè)置好程序的"位置"、"語言"和"路徑"等選項(xiàng)后,單擊"確定"按鈕。

ASP.NET 移動(dòng)WEB程序

當(dāng)你完成上述步驟后,就已經(jīng)創(chuàng)建好了一個(gè)ASP.NET 網(wǎng)站?,F(xiàn)在我們就可以在該網(wǎng)站中添加一些針對(duì)移動(dòng)設(shè)備的WEB窗體,其具體的實(shí)現(xiàn)過程如下:

1. 在Visual Studio 2005的"解決方案資源管理器"窗口中選擇剛才創(chuàng)建好的網(wǎng)站項(xiàng)目,右鍵點(diǎn)擊并在彈出的菜單中選擇"添加新項(xiàng)"命令。

2. 在彈出的"添加新項(xiàng)"窗體中選擇"移動(dòng)WEB窗體"項(xiàng)。

3. 設(shè)置窗體的"名稱"和"語言"等項(xiàng),并且確保"將代碼放在單獨(dú)的文件中"選擇框處于選中狀態(tài)。

4. 單擊"添加"按鈕。
設(shè)置窗體的

當(dāng)單擊"添加"按鈕后,你會(huì)發(fā)現(xiàn)Visual Studio 2005自動(dòng)添加了兩個(gè)文件,在這里窗體名稱被設(shè)置為"MobileDefault",因此這兩個(gè)文件分別為MobileDefault.aspx 和MobileDefault.aspx.cs (如果你選擇的語言為VB的話,則這兩個(gè)文件為MobileDefault.aspx和MobileDefault.aspx.vb)。MobileDefault.aspx文件包含在窗體使用的各個(gè)ASP.NET 移動(dòng)控件的聲明方式,而MobileDefault.aspx.cs則包含了一些程序?qū)崿F(xiàn)代碼和事件處理代碼,這和傳統(tǒng)的ASP.NET應(yīng)用程序采用的"代碼后置"的方式是一致的。

窗體添加完畢后,我們就可以使用工具箱中的"移動(dòng)WEB窗體"標(biāo)簽下的各個(gè)控件。如同其它的ASP.NET控件一樣,我們也可以根據(jù)需求設(shè)置這些控件的屬性和事件行為。你可以在"原代碼"窗口下直接輸入"〈 mobile: /〉"的語法方式來添加移動(dòng)控件:

  1. 〈 mobile:TextBox ID="MyTextBox" runat="server" 〉  
  2. 〈 /mobile:TextBox 〉  
  3. 〈 mobile:Label ID="MyLabel" runat="server" 〉  
  4. 標(biāo)簽控件〈 /mobile:Label 〉  

下圖顯示了一個(gè)放置了Label、TextBox和Command控件的移動(dòng)WEB窗體。該窗體所實(shí)現(xiàn)的功能是根據(jù)TextBox控件中輸入的CustomerID來查找相應(yīng)的用戶信息,我們并沒有編寫對(duì)應(yīng)的邏輯代碼,只是顯示了該窗體的界面:

窗體的界面

Visual Studio 2005中對(duì)應(yīng)的HTML代碼如下所示,我們可以看到上述的3個(gè)控件均以 〈mobile: 為前綴在頁面代碼中進(jìn)行了聲明。同樣的,F(xiàn)orm也采用了類似的方式加以聲明,見代碼7所示。在傳統(tǒng)的ASP.NET應(yīng)用程序中處理窗體和處理控件的方式是不一樣的,這和移動(dòng)WEB頁面有很大的差別。其最大的不同就是開發(fā)人員可以在同一個(gè)移動(dòng)WEB頁面中創(chuàng)建多個(gè)窗體,并且可以在這些窗體間自由地導(dǎo)航而無需回發(fā)到服務(wù)器。利用該項(xiàng)特性可以減少因移動(dòng)設(shè)備帶寬小而帶來的約束,大大減少了和服務(wù)器通訊的數(shù)據(jù)量。換句話說,移動(dòng)設(shè)備中是以窗體為單位進(jìn)行顯示,而不是像傳統(tǒng)的ASP.NET程序那樣以頁面為單位進(jìn)行顯示。我們使用移動(dòng)設(shè)備瀏覽不同屏的信息時(shí),可能并沒有跳轉(zhuǎn)到不同的頁面,而是在同一個(gè)頁面的不同窗體間進(jìn)行跳轉(zhuǎn)。

  1. 01 〈%@ Page Language="C#" AutoEventWireup="true"   
  2. CodeFile="MobileDefault.aspx.cs" 
  3. 02 Inherits="MobileDefault" % 〉  
  4. 03 〈%@ Register TagPrefix="mobile"   
  5. Namespace="System.Web.UI.MobileControls"   
  6. 04 Assembly="System.Web.Mobile" % 〉  
  7. 05 〈html xmlns="http://www.w3.org/1999/xhtml"  〉  
  8. 06 〈body 〉  
  9. 07 〈mobile:Form id="Form1" runat="server" 〉  
  10. 08 〈mobile:Label id="lblID" Runat="server" 〉  
  11. Customer ID〈/mobile:Label 〉  
  12. 09 〈mobile:TextBox id="txtCustID" Runat="server" 〉  
  13. 〈/mobile:TextBox 〉  
  14. 10 〈mobile:Command id="cmdGetCustomer"   
  15. Runat="server" 〉Find Customer  
  16. 11 〈/mobile:Command 〉  
  17. 12 〈/mobile:Form 〉  
  18. 13 〈/body 〉  
  19. 14 〈/html 〉 

ASP.NET移動(dòng)開發(fā)中的WEB窗體的開發(fā)視圖 Visual Studio 2005的開發(fā)環(huán)境中提供了三種視圖進(jìn)行ASP.NET 移動(dòng)WEB窗體的設(shè)計(jì)和開發(fā)。這三種視圖分別為設(shè)計(jì)視圖、HTML視圖和代碼視圖,我們可以針對(duì)不同的開發(fā)需求在這些視圖間進(jìn)行切換。現(xiàn)在我們就這三種視圖進(jìn)行一個(gè)簡(jiǎn)短的概要。

#p#

設(shè)計(jì)視圖

設(shè)計(jì)視圖狀態(tài)下將加載移動(dòng)WEB窗體,并且自動(dòng)呈現(xiàn)窗體中所包含的移動(dòng)控件。你可以從工具箱中以拖拽的方式添加新的控件,你也可以通過屬性窗口修改已存在的控件的屬性。如果想要移除窗體中的某些控件的話,你可以點(diǎn)選該控件并使用"Delete"鍵進(jìn)行刪除。

注意,ASP.NET移動(dòng)開發(fā)的WEB窗體的設(shè)計(jì)視圖并不是一個(gè)"可見即可得"的編輯器,這是因?yàn)椴煌囊苿?dòng)設(shè)備其支持的呈現(xiàn)方式是不同的。例如,在設(shè)計(jì)視圖狀態(tài)下通常一行只能放置一個(gè)控件,但是在某些設(shè)備上支持在同一行放置多個(gè)控件,因此各個(gè)控件將會(huì)盡量地??吭谕恍猩?。正因?yàn)槿绱耍覀冞€需要注意ASP.NET移動(dòng)WEB窗體并不支持控件的絕對(duì)位置。

在設(shè)計(jì)器中,您可以按照希望控件顯示給用戶的順序?qū)⑺鼈兲砑拥酱绑w或面板中,但是不能定義當(dāng)它們呈現(xiàn)在移動(dòng)設(shè)備的屏幕上時(shí)所處的絕對(duì)位置。為了適應(yīng)多種多樣的移動(dòng)設(shè)備,ASP.NET 移動(dòng)設(shè)計(jì)器使您能夠針對(duì)特定設(shè)備自定義移動(dòng) Web 窗體頁和控件的外觀。這種靈活性使您可以確保:您的應(yīng)用程序在目標(biāo)設(shè)備上具有適用且吸引人的外觀。

HTML視圖

HTML視圖狀態(tài)下顯示的是HTML源代碼,你可以采用直接編碼的方式設(shè)置移動(dòng)控件和窗體的布局。當(dāng)然我們已經(jīng)很少使用這種方式進(jìn)行程序的開發(fā),你完全可以在設(shè)計(jì)視圖狀態(tài)下設(shè)置移動(dòng)控件和窗體的布局,而后Visual Studio 2005會(huì)自動(dòng)生成相應(yīng)的頁面代碼。

你可以在Visual Studio 2005開發(fā)文檔窗體的底部選擇合適的標(biāo)簽進(jìn)行設(shè)計(jì)視圖和HTML視圖的切換,如圖中箭頭所示:

HTML視圖

代碼視圖

在采用代碼后置的方式下,我們可以切換到代碼視圖狀態(tài)查看頁面程序的邏輯代碼。你可以在頁面的空白出單擊右鍵,然后選擇"查看代碼"項(xiàng)就可以切換到代碼視圖狀態(tài)。

代碼視圖

ASP.NET移動(dòng)開發(fā)控件的事件處理

和傳統(tǒng)的ASP.NET控件一樣,移動(dòng)控件也可以在特定的狀態(tài)下激發(fā)事件,并提供了一些默認(rèn)事件來處理經(jīng)常發(fā)生的方案。除此之外,移動(dòng)控件也可以在某些情況下激發(fā)一些其它的處理事件(非默認(rèn)的事件)。傳統(tǒng)的ASP.NET程序中,用戶通過瀏覽器執(zhí)行某些操作時(shí)會(huì)激發(fā)相應(yīng)的事件,移動(dòng)設(shè)備瀏覽器也采用了類似的處理方式。我們可以將一個(gè)事件通過回發(fā)的方式傳遞到服務(wù)器端,繼而引發(fā)服務(wù)器端對(duì)該事件的處理,最終的處理結(jié)果將以HTML的形式傳遞到客戶端瀏覽器。處理一個(gè)由移動(dòng)控件激發(fā)的默認(rèn)事件是非常容易的,我們只需在頁面中放置一個(gè)移動(dòng)控件并雙擊該控件即可。下面為一個(gè)較常見的事件處理代碼,即一旦用戶單擊命令按鈕就激發(fā)其Click事件。

protected void cmdGetCustomer_Click(object sender, EventArgs e)

{……}

創(chuàng)建一個(gè)非默認(rèn)的事件處理器也是非常容易的,我們現(xiàn)在無需考慮語言的相關(guān)性。如果你曾經(jīng)使用過Visual
Studio 2003的話,你會(huì)發(fā)現(xiàn)用VB.NET來處理事件要比C#復(fù)雜。在當(dāng)前的Visual Studio版本中已經(jīng)將這兩種語言的操作過程進(jìn)行了統(tǒng)一,下面的步驟就是創(chuàng)建一個(gè)非默認(rèn)事件處理器的詳細(xì)步驟:

1. 在狀態(tài)視圖中點(diǎn)選要設(shè)置事件的控件。

2. 在屬性窗口中選擇事件按鈕,也就是那個(gè)帶有閃電標(biāo)記的按鈕。單擊后就會(huì)在屬性窗體中顯示控件的所有的可用事件。

3. 雙擊你想處理事件的右側(cè)空白欄,這時(shí)將切換到相應(yīng)事件的代碼視圖狀態(tài)。

事件的代碼視圖狀態(tài)

使用容器控件

ASP.NET移動(dòng)開發(fā)的WEB窗體中提供了兩種容器控件:Form控件和Panel控件。幾乎所有的移動(dòng)控件都是放置在這兩種控件之中,唯獨(dú)StyleSheet控件例外。StyleSheet控件可以單獨(dú)地放置在頁面中,該控件將會(huì)在以后的小節(jié)中進(jìn)行詳細(xì)的介紹。我們可以將屬于同一組功能的移動(dòng)控件都放置在一個(gè)容器控件中,這樣使得程序的頁面結(jié)構(gòu)更加的清晰。我們還可以為一個(gè)容器控件設(shè)置特定的樣式表,所有位于該容器的移動(dòng)控件將會(huì)具有一致性的用戶體驗(yàn)。注意,在頁面中添加的容器控件是沒有固定大小的,因?yàn)樗鼘㈦S著你在其中放置的控件而自動(dòng)地進(jìn)行調(diào)整,因此我們不可以顯式地為容器控件指定一個(gè)特定的大小。

ASP.NET 移動(dòng)WEB窗體對(duì)所有的控件都使用線性布局,即每行只放一個(gè)控件。這是因?yàn)楸姸嗟囊苿?dòng)設(shè)備之間存在巨大的差異,尤其是一些支持WML的設(shè)備并不支持控件的并排顯示。但是如果強(qiáng)制使用許多控件都支持的BreakAfter屬性的話,則有相應(yīng)的顯示能力的設(shè)備上將啟用并排顯示的布局。另外,它會(huì)自動(dòng)適應(yīng)不支持并排呈現(xiàn)的設(shè)備的呈現(xiàn)規(guī)則。將 BreakAfter 屬性設(shè)置為 false 將指示 ASP.NET 在所有具備相應(yīng)顯示能力的設(shè)備上并排放置控件。為了適應(yīng)多種多樣的移動(dòng)設(shè)備,ASP.NET 移動(dòng)設(shè)計(jì)器使您能夠針對(duì)特定設(shè)備自定義移動(dòng) Web 窗體頁和控件的外觀。我將在后面的"設(shè)備篩選器"小節(jié)中詳細(xì)介紹如何開發(fā)針對(duì)特定設(shè)備的應(yīng)用程序。

Form控件

所有的內(nèi)容和控件都包含在Form控件中,而且每個(gè)ASP.NET 移動(dòng)WEB頁面至少要包含一個(gè)Form控件,并且該頁面可以包含多個(gè)Form控件。但是,當(dāng)這些控件顯示在移動(dòng)設(shè)備上時(shí),移動(dòng) Web 應(yīng)用程序一次只能顯示一個(gè)移動(dòng)Form 控件。當(dāng)你添加一個(gè)移動(dòng)WEB窗體時(shí)會(huì)自動(dòng)在頁面上創(chuàng)建一個(gè)默認(rèn)的Form控件。如果你需要在頁面中添加多個(gè)Form控件時(shí),可以在工具箱中直接拖拽出。

Form控件 

用戶瀏覽到某移動(dòng)Web窗體頁時(shí),默認(rèn)情況下將顯示該頁面上的第一個(gè)Form控件。你也可以通過編碼的方式直接在頁面的Page_Load事件中指定一個(gè)Form控件為當(dāng)前的活動(dòng)窗體。當(dāng)然你也可以采用編碼的方式并且根據(jù)用戶的輸入信息導(dǎo)航到相應(yīng)的Form控件上。在同一個(gè)頁面的不同F(xiàn)orm控件之間導(dǎo)航并不需要通過服務(wù)器的處理,因此可以極大地提高程序的響應(yīng)速度。將一個(gè)頁面組織成多個(gè)Form控件還有個(gè)優(yōu)點(diǎn),那就是可以在不同的Form控件間傳遞一些豐富的狀態(tài)信息。因?yàn)橐粋€(gè)頁面上的所有 Form 控件都共享相同的代碼隱藏文件和頁面狀態(tài)信息,因此各個(gè)Form 控件都可以共享相同的方法和成員。

由于ASP.NET移動(dòng)WEB程序通常是在一些小屏幕的移動(dòng)設(shè)備上運(yùn)行的,為了適應(yīng)這種特定的顯示環(huán)境,你需要將一個(gè)普通的ASP.NET WEB頁面分解成多個(gè)移動(dòng)WEB頁面。如果沒有Form控件的話,這種分解過程是非常繁雜的,因?yàn)槟阈枰贏SP.NET WEB頁面和移動(dòng)WEB頁面間建立一個(gè)一對(duì)多的映射,這樣使得程序難以維護(hù)。

最合適的方式就是在一個(gè)移動(dòng)WEB頁面放置多個(gè)Form 控件,這樣使得ASP.NET WEB頁面和移動(dòng)WEB頁面是一個(gè)一對(duì)一的鏡像關(guān)系。在面對(duì)數(shù)據(jù)量較大的移動(dòng)WEB頁面時(shí),將所有的Form控件在頁面初始化時(shí)就全部加載到移動(dòng)設(shè)備的響應(yīng)時(shí)候是相當(dāng)長(zhǎng)的。但是一旦加載到移動(dòng)設(shè)備后在各個(gè)Form控件進(jìn)行導(dǎo)航的速度又是非常快的,因?yàn)橐磺行畔⒍即娣旁诒镜氐膬?nèi)存中。這種頁面的加載方法總體上還是利大于弊的,開發(fā)人員可以根據(jù)實(shí)際的需求加以權(quán)衡,而且同一頁面上的所有Form控件可以共享相同的代碼隱藏文件和頁面狀態(tài)信息。

Panel(面板)控件

使用 Panel 控件可將窗體中的控件進(jìn)行分組。這使您可以對(duì)整個(gè)組應(yīng)用 StyleSheet 控件。面板還能幫助應(yīng)用程序確定分頁。ASP.NET 會(huì)盡量將一個(gè)面板中的所有控件都同時(shí)顯示在屏幕上。

Panel(面板)控件

若要將面板添加到應(yīng)用程序中,請(qǐng)從"工具箱"中將其拖放到應(yīng)用程序。面板中的所有控件都繼承該面板的樣式。可以將面板插入Form控件或其他面板中。應(yīng)用程序隱藏或顯示面板時(shí),它將對(duì)該面板包含的控件應(yīng)用相同的操作。此外,應(yīng)用程序還可將面板控件用作動(dòng)態(tài)創(chuàng)建的控件的容器。

Panel控件必須放在Form控件中、另一Panel控件中或控件模板中。除StyleSheet控件、DeviceSpecific控件和Form控件外,所有其他控件也都必須放在Form或Panel控件中。

【編輯推薦】

  1. 介紹ASP.NET MVC框架
  2. 配置ASP.NET AJAX概述
  3. 安裝ASP.NET AJAX的過程
  4. ASP.NET頁面請(qǐng)求原理淺析
  5. ASP.NET頁面靜態(tài)化四步走
  6. 淺析ASP.NET授權(quán)模塊
責(zé)任編輯:冰荷 來源: yesky
相關(guān)推薦

2009-08-04 16:33:50

ASP.NET移動(dòng)開發(fā)

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-08-03 15:08:00

SqlDataSour

2009-07-24 15:41:00

ASP.NET編程入門

2009-07-24 10:14:22

ASP.NET開發(fā)

2009-08-07 14:42:02

ASP.NET控件開發(fā)

2009-08-10 18:46:07

ASP.NET基礎(chǔ)語法

2009-08-27 16:59:20

ASP.NET用戶控件

2009-08-04 16:09:38

ASP.NET入門

2009-08-06 13:08:23

ASP.NET控件開發(fā)

2009-08-06 18:18:27

ASP.NET控件開發(fā)ASP.NET復(fù)合控件

2009-08-04 10:43:59

ASP.NET控件開發(fā)

2009-08-05 10:36:08

開發(fā)ASP.NET

2009-08-17 16:59:36

ASP.NET緩存機(jī)制

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-08-07 10:34:56

ASP.NET控件開發(fā)

2009-08-07 13:31:41

ASP.NET控件開發(fā)

2009-02-23 15:20:03

SQL Server數(shù)據(jù)庫ASP.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)