添加ASP.NET其他的AJAX技術(shù)
添加ASP.NET其他的AJAX技術(shù)
我們完全可以實(shí)現(xiàn)類似于包含在TaskView.ascx中的<form>部分。而且,我們同樣可以其中描述每一個(gè)任務(wù)項(xiàng),但是卻能夠把一個(gè)常規(guī)的基于提交的表單轉(zhuǎn)換成一個(gè)支持AJAX技術(shù)的表單。這樣以來,任務(wù)項(xiàng)的編輯與刪除操作就可以在局部刷新狀態(tài)下實(shí)現(xiàn)。示例代碼中對(duì)此作了解釋,在此不再贅述。
接下來,我想介紹的是如何添加一些腳本并把它添加到我們的示例程序的UI中創(chuàng)建其他基于AJAX的交互而生成的HTML。具體地說,我想在文本框中添加一個(gè)水印效果,此效果為用戶輸入提供了極為友好的用戶直觀性提示。只要沒有用戶輸入,此水印效果就會(huì)顯示出來,而當(dāng)用戶把輸入焦點(diǎn)定位于文本框中時(shí)即水印效果消失。
當(dāng)然,篇幅所限,我們也不會(huì)過于細(xì)致地去討論腳本本身。有關(guān)此腳本詳細(xì)內(nèi)容,請(qǐng)參考本文源碼,但是需要指出的是這個(gè)水印效果被實(shí)現(xiàn)為大家可能熟悉的ASP.NET AJAX框架的一個(gè)客戶端行為(Behavior)組件。就像任何其他行為組件一樣,我們的示例中所使用的文本框也是與DOM元素相關(guān)聯(lián),而且它實(shí)現(xiàn)了對(duì)此元素引發(fā)的相關(guān)事件的訂閱。
在傳統(tǒng)的web表單頁面中,我經(jīng)常會(huì)直接使用支持AJAX功能的服務(wù)器控件,例如WatermarkExtender,并使之關(guān)聯(lián)到一個(gè)服務(wù)器控件。但是,在本例中,我使用了另一種擴(kuò)展方法來實(shí)現(xiàn)渲染效果。通過此方法,我也可以實(shí)現(xiàn)創(chuàng)建并初始化腳本行為組件的一個(gè)實(shí)例。下面給出了我更新以后的視圖關(guān)鍵部分的代碼片斷:
- <% RenderBeginAjaxForm(Url.Action("Add"),
- new { Update="taskList, UpdateType="appendBottom",
- Highlight="True",
- Starting="startAddTask", Completed="endAddTask" }); %>
- <input type="text" name="name" id="nameTextBox" />
- <% Ajax.Watermark("nameTextBox",
- new { watermarkText="[What do you need to do?]",
- watermarkCssClass="watermark"}); %>
- <input type="submit" name="addTask" value="Add Task" />
- <% RenderEndForm(); %>
上面的擴(kuò)展方法實(shí)現(xiàn)相當(dāng)簡(jiǎn)單。其實(shí),它也就是調(diào)用了現(xiàn)成的AJAX框架。下面是我定義的WatermarkBehavior類相應(yīng)的代碼:
- public static class WatermarkBehavior {
- public static void Watermark(this AjaxHelper ajaxHelper,
string id, object watermarkOptions) {- ajaxHelper.RegisterScript("~/Views/Scripts/Watermark.js");
- ajaxHelper.RegisterScriptBehavior(id, "Ajax.Watermark", watermarkOptions);
- }
- }
當(dāng)然,我們還可以更細(xì)致地控制上面的編碼,但這里僅展示了提供搜集注冊(cè)的腳本功能核心部分的代碼片斷,以及把它們生成到頁面中,然后實(shí)例化行為對(duì)象,并使其與相應(yīng)的DOM元素建立關(guān)聯(lián),以及傳遞進(jìn)視圖提供的選擇以便定制具體的實(shí)例介紹添加ASP.NET其他的AJAX技術(shù)。
【編輯推薦】