AJAX代表異步JavaScript和XML。這是一種跨平台技術,可加快響應時間。AJAX伺服器控制項將腳本添加到由瀏覽器執行和處理的頁面。
但是,與其他ASP.NET伺服器控制項一樣,這些AJAX伺服器控制項也可以具有與之關聯的方法和事件處理程序,這些方法和事件處理程序在伺服器端進行處理。
Visual Studio IDE中的控制項工具箱包含一組名爲「AJAX擴展」的控制項
The ScriptManager Control
ScriptManager控制項是最重要的控制項,必須出現在頁面上,其他控制項才能工作。
它有基本語法:
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>
如果從「添加項」對話框創建「啓用Ajax的站點」或添加「Ajax Web表單」,則Web表單將自動包含腳本管理器控制項。ScriptManager控制項負責所有伺服器端控制項的客戶端腳本。
The UpdatePanel Control
UpdatePanel控制項是一個容器控制項,從控制項類派生。它充當內部子控制項的容器,並且沒有自己的接口。當其中的控制項觸發回發時,UpdatePanel會進行干預,以異步啓動回發並僅更新頁面的那一部分。
例如,如果按鈕控制項位於「更新」面板中並單擊它,則只有「更新」面板中的控制項會受到影響,頁面其他部分上的控制項不會受到影響。這稱爲部分回發或異步回發。
Example
在應用程式中添加AJAX web表單。默認情況下,它包含腳本管理器控制項。插入更新面板。在「更新面板」控制項中放置按鈕控制項和標籤控制項。在面板外部放置另一組按鈕和標籤。
設計視圖如下所示:
源文件如下:
<form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> </div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="btnpartial" runat="server" onclick="btnpartial_Click" Text="Partial PostBack"/> <br /> <br /> <asp:Label ID="lblpartial" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> <p> </p> <p>Outside the Update Panel</p> <p> <asp:Button ID="btntotal" runat="server" onclick="btntotal_Click" Text="Total PostBack" /> </p> <asp:Label ID="lbltotal" runat="server"></asp:Label> </form>
兩個按鈕控制項對於事件處理程序具有相同的代碼:
string time = DateTime.Now.ToLongTimeString(); lblpartial.Text = "Showing time from panel" + time; lbltotal.Text = "Showing time from outside" + time;
請注意,在執行頁面時,如果單擊「總回發」按鈕,則它會更新兩個標籤中的時間,但如果單擊「部分回發」按鈕,則它只更新「更新」面板中的標籤。
一個頁面可以包含多個更新面板,每個面板包含其他控制項(如網格)並顯示數據的不同部分。
當發生總回發時,默認情況下更新面板內容。可以通過更改控制項的UpdateMode屬性來更改此默認模式。讓我們看看更新面板的其他屬性。
Properties of the UpdatePanel Control
下表顯示更新面板控制項的屬性:
Properties | Description |
---|---|
ChildrenAsTriggers | This property indicates whether the post backs are coming from the child controls, which cause the update panel to refresh. |
ContentTemplate | It is the content template and defines what appears in the update panel when it is rendered. |
ContentTemplateContainer | Retrieves the dynamically created template container object and used for adding child controls programmatically. |
IsInPartialRendering | Indicates whether the panel is being updated as part of the partial post back. |
RenderMode | Shows the render modes. The available modes are Block and Inline. |
UpdateMode | Gets or sets the rendering mode by determining some conditions. |
Triggers | Defines the collection trigger objects each corresponding to an event causing the panel to refresh automatically. |
Methods of the UpdatePanel Control
下表顯示了更新面板控制項的方法:
Methods | Description |
---|---|
CreateContentTemplateContainer | Creates a Control object that acts as a container for child controls that define the UpdatePanel control's content. |
CreateControlCollection | Returns the collection of all controls that are contained in the UpdatePanel control. |
Initialize | Initializes the UpdatePanel control trigger collection if partial-page rendering is enabled. |
Update | Causes an update of the content of an UpdatePanel control. |
更新面板的行爲取決於UpdateMode屬性和ChildrenAsTriggers屬性的值。
UpdateMode | ChildrenAsTriggers | Effect |
---|---|---|
Always | False | Illegal parameters. |
Always | True | UpdatePanel refreshes if whole page refreshes or a child control on it posts back. |
Conditional | False | UpdatePanel refreshes if whole page refreshes or a triggering control outside it initiates a refresh. |
Conditional | True | UpdatePanel refreshes if whole page refreshes or a child control on it posts back or a triggering control outside it initiates a refresh. |
The UpdateProgress Control
當更新一個或多個更新面板控制項時,UpdateProgress控制項在瀏覽器上提供一種反饋。例如,當用戶在執行某些面向資料庫的作業時登錄或等待伺服器響應。
它提供了一個類似「正在加載頁面…」的視覺確認,指示工作正在進行。
UpdateProgress控制項的語法爲:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" > <ProgressTemplate> Loading... </ProgressTemplate> </asp:UpdateProgress>
上面的代碼片段顯示了ProgressTemplate標記中的一條簡單消息。但是,它可以是一個圖像或其他相關控制項。UpdateProgress控制項將爲每個異步回發顯示,除非使用AssociatedUpdatePanelID屬性將其分配給單個更新面板。
Properties of the UpdateProgress Control
下表顯示更新進度控制項的屬性:
Properties | Description |
---|---|
AssociatedUpdatePanelID | Gets and sets the ID of the update panel with which this control is associated. |
Attributes | Gets or sets the cascading style sheet (CSS) attributes of the UpdateProgress control. |
DisplayAfter | Gets and sets the time in milliseconds after which the progress template is displayed. The default is 500. |
DynamicLayout | Indicates whether the progress template is dynamically rendered. |
ProgressTemplate | Indicates the template displayed during an asynchronous post back which takes more time than the DisplayAfter time. |
Methods of the UpdateProgress Control
下表顯示了更新進度控制項的方法:
Methods | Description |
---|---|
GetScriptDescriptors | Returns a list of components, behaviors, and client controls that are required for the UpdateProgress control's client functionality. |
GetScriptReferences | Returns a list of client script library dependencies for the UpdateProgress control. |
The Timer Control
定時器控制用於自動啓動回發。這可以通過兩種方式實現:
(1) 設置UpdatePanel控制項的Triggers屬性:
<Triggers> <asp:AsyncPostBackTrigger ControlID="btnpanel2" EventName="Click" /> </Triggers>
(2) 將計時器控制項直接放在UpdatePanel中作爲子控制項觸發器。單個計時器可以是多個UpdatePanel的觸發器。