DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Atlas第一篇[ScriptManager]
Atlas第一篇[ScriptManager]
編輯:AJAX詳解     
 1上個星期我們討論了微軟以Atlas形式來應對Ajax的潮流。Atlas基本上就是一個用來創建跨浏覽器、跨平台的AJax應用程序的ASP.Net 2.0框架。
  2
  3微軟最近發布了四月社區技術預覽(April Community Technology PrevIEw)並聲明認為已經准備好發布live許可證了。了解到這之後,我們將討論Atlas的核心:ScriptManager類。
  4
  5關注的焦點
  6
  7ScriptManager類管理著Web頁面上的所有Atlas組件。此外,它還會處理部分頁面的更新並生成客戶腳本,讓你可以通過使用代理對象訪問來自JavaScript的Web服務方法。
  8
  9每個使用Atlas組件的頁面都只能帶有一個ScriptManager控件,它在Web頁面的開始部分公開。它會注冊Atlas腳本,把它們放在頁面上供使用。如果你正在使用ASP.Net 2.0,那麼你可以在主頁面上放一個ScriptManager控件,這樣它就可以被使用主頁面的所有頁面用到了。ScriptManager控件的句法見列表A:
 10
 11<atlas:ScriptManager
 12EnablePartialRendering="true|false"
 13EnableScriptComponents="true|false"
 14ID="string"
 15runat="server" >
 16<Scripts>
 17<atlas:ScriptReference
 18Browser="browser reference"
 19Path="script file path"
 20ScriptName="script file name" />
 21</Scripts>
 22<Services>
 23<atlas:ServiceReference
 24GenerateProxy="true|false"
 25Path="server path name"
 26Type="type name" />
 27</Services>
 28</atlas:ScriptManager> 
 29現在讓我們更加仔細地看看ScriptManager控件聲明的各個部分。
 30
 31EnablePartialRendering:這個屬性用來表示是否激活部分生成。部分生成用來只重新加載部分頁面。如果為“真”的話,那麼異步控件的常規回發就只顯示發送給客戶端的增量變化。 
 32EnableScriptComponents:這個屬性用來控制Atlas的哪一部分在默認情況下可以用在客戶端上。它會確定用於用戶界面組件、行為、行為綁定和XML腳本編寫的Atlas腳本在默認情況下是否可以被下載到客戶端上。如果為“偽”的話,你可以在ScriptReference元素裡下載具體的組件。 
 33ScriptReference:這個元素(它必須被包括在Scripts元素裡)讓你可以能夠添加沒有自動包括進來的腳本。腳本要用Path屬性來指定,你還可以用Browser屬性來為腳本指定一個浏覽器。Atlas的確包括一些在默認情況下不會被發送給客戶端的腳本;這些腳本可以用ScriptName腳本來添加。這樣的腳本包括AtlasUIDragDrop、AtlasUIGlitz和AtlasUIMap。 
 34ServiceReference:這個元素可以讓你指定要被用在頁面腳本裡的Web服務。Type屬性可以是任何合法的MIME類型。GenerateProxy屬性讓你能夠臨時中止為Scripts集合裡列出的服務生成代理對象。 
 35列表B裡的Web頁面使用了一個本地Web服務(盡管這個服務可以是任何服務):
 36
 37<%@ Page Language="C#" %>
 38<!DOCTYPE Html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN" 
 39"http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
 40<Html XMLns="http://www.w3.org/1999/xHtml" >
 41<head id="hd">
 42<title>TR Sample</title>
 43<atlas:ScriptManager ID="scriptManager" runat="server" 
 44EnablePartialRendering="false"
 45EnableScriptComponents="false" >
 46<Services>
 47<atlas:ServiceReference Path="testService.asmx" GenerateProxy="true"聽 />
 48</Services>
 49<Scripts>
 50<atlas:ScriptReference Path="AtlasRuntime.JS" />
 51</Scripts>
 52</atlas:ScriptManager>
 53<script type="text/Javascript">
 54function callWebService() {
 55testService.displayTime("request data", handleResponse);
 56}
 57function handleResponse(response) {
 58alert("Server response: " + response);
 59}
 60</script></head>
 61<body>
 62<form id="frmTR" runat="server">
 63<div>
 64<p><input type="button" onclick="callWebService()" value="Call Web Service" /></p>
 65</div></form></body></Html> 
 66頁面會聲明Web服務參考,後者後來用在JavaScript裡來使用其唯一的方法。部分頁面生成被禁用,調用所有的腳本庫也被禁用。ScriptReference部分參考了AtlasRuntime腳本庫(隨Atlas一起安裝),所以基本的功能是可用的。這個服務的源代碼見列表C:
 67
 68<%@ WebService Language="C#" Class="testService" %>
 69using System;
 70using System.Web;
 71using System.Web.Services;
 72using System.Web.Services.Protocols;
 73[WebService(Namespace = "http://tempuri.org/")]
 74[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 75public class testService : System.Web.Services.WebService {
 76[WebMethod]
 77public string displayTime() {
 78return DateTime.Now.ToString();
 79} } 
 80雖然你被嚴格限制在一個Web頁面上只能使用一個ScriptManager控件的實例,但是你可能想要往頁面上添加額外的腳本或者服務參考。在這種情況下,ScriptManagerProxy控件就有了用武之地。
 81
 82<atlas:ScriptManagerProxyrunat="server" id="smProxy">
 83
 84</atlas:ScriptManagerProxy> 
 85當ScriptManager對象已經被聲明的時候,如果你需要使用額外的腳本(ScriptReference元素),這個控件就非常有用。一個典型的例子用到了ASP.Net 2.0,並把一個ScriptManager對象放在主頁面裡。使用主頁面的頁面可能需要使用額外的腳本,所以代理對象可以用了。它的句法與普通的ScriptManager控件是一樣的。
 86
 87其他控件
 88
 89盡管ScriptManager控件是基於Atlas的Web頁面的焦點,但是這個框架還提供了一些直接可用的控件,這樣通過少量的編程就可以增強Web頁面的效果。下面就是最新版的Atlas裡包括的一些控件:
 90
 91AutoCompleteExtender:讓你擴展文本框控件來提供自動完成功能。這個Web服務被用來提供建議數據。 
 92DragOverlayExtender:你可以把服務器控件變成一個可以隨著鼠標和鍵盤活動的浮動控件。 
 93ProfileScriptService:用來創建一個用來訪問ASP.Net用戶配置文件的客戶端配置組件。 
 94TimerControl:用來創建一個客戶端計數器,按照固定的時間間隔進行回發。 
 95Atlas的Web網站上有很多例子,但是DragOverlayExtender控件是最酷和最容易實現的一個。基本上,你可以創建一個控件並把它指派給DragOverlayExtender控件的TargetControlID屬性的實例,以便讓其工作。列表D裡的例子說明了它把圖像移動到頁面周圍的用法:
 96
 97<%@ Page Language="C#" %>
 98<!DOCTYPE Html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN" 
 99"http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
100<Html XMLns="http://www.w3.org/1999/xHtml" >
101<head id="hd">
102<title>Drag-n-Drop</title>
103<atlas:ScriptManager ID="scriptManager" runat="server" 
104EnablePartialRendering="false"
105EnableScriptComponents="true" >
106</atlas:ScriptManager>
107</head>
108<body>
109<form id="frmTest" runat="server">
110<ASP:Imagerunat="server" ImageUrl="~/testimage.JPG" id="imgTest" />
111<atlas:DragOverlayExtender ID="doe" runat="Server">
112<atlas:DragOverlayPropertIEs Enabled="True" TargetControlID="imgTest" />
113</atlas:DragOverlayExtender>
114</form></body></Html> 
115其他信息
116
117系統管理員沒有必要使用Atlas——你只用把Microsoft.Web.Atlas.dll文件復制到項目的\bin目錄下,並把Atlas的\ScriptLibrary目錄裡的.JS復制到你的項目裡就行了。
118
119此外,雖然Atlas打著微軟的標簽,但是它適用於所有的浏覽器。基於Atlas控件的所有樣式都是用層疊樣式表(CSS)完成的。此外,Atlas允許你根據需要開發針對不同浏覽器的內容。
120
121最後,有些觀點認為Atlas只是把開發人員從Firefox和Opera上轉移開的一種策略,這兩個浏覽器仍舊不斷在浏覽器市場上獲得更多的份額。雖然我們確信微軟了解其競爭對手的行動,但是我並不十分擔心這個軟件巨頭的動機;我只希望得到能夠讓我為客戶創建強大解決方案的技術。Atlas可能(或許無法)在它最終發布的時候滿足這一要求,但是到目前為止我還是對已經看到的東西十分滿意。