添加ASP.NET其他的AJAX技術(shù)
添加ASP.NET其他的AJAX技術(shù)
我們完全可以實現(xiàn)類似于包含在TaskView.ascx中的<form>部分。而且,我們同樣可以其中描述每一個任務項,但是卻能夠把一個常規(guī)的基于提交的表單轉(zhuǎn)換成一個支持AJAX技術(shù)的表單。這樣以來,任務項的編輯與刪除操作就可以在局部刷新狀態(tài)下實現(xiàn)。示例代碼中對此作了解釋,在此不再贅述。
接下來,我想介紹的是如何添加一些腳本并把它添加到我們的示例程序的UI中創(chuàng)建其他基于AJAX的交互而生成的HTML。具體地說,我想在文本框中添加一個水印效果,此效果為用戶輸入提供了極為友好的用戶直觀性提示。只要沒有用戶輸入,此水印效果就會顯示出來,而當用戶把輸入焦點定位于文本框中時即水印效果消失。
當然,篇幅所限,我們也不會過于細致地去討論腳本本身。有關(guān)此腳本詳細內(nèi)容,請參考本文源碼,但是需要指出的是這個水印效果被實現(xiàn)為大家可能熟悉的ASP.NET AJAX框架的一個客戶端行為(Behavior)組件。就像任何其他行為組件一樣,我們的示例中所使用的文本框也是與DOM元素相關(guān)聯(lián),而且它實現(xiàn)了對此元素引發(fā)的相關(guān)事件的訂閱。
在傳統(tǒng)的web表單頁面中,我經(jīng)常會直接使用支持AJAX功能的服務器控件,例如WatermarkExtender,并使之關(guān)聯(lián)到一個服務器控件。但是,在本例中,我使用了另一種擴展方法來實現(xiàn)渲染效果。通過此方法,我也可以實現(xiàn)創(chuàng)建并初始化腳本行為組件的一個實例。下面給出了我更新以后的視圖關(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(); %>
上面的擴展方法實現(xiàn)相當簡單。其實,它也就是調(diào)用了現(xiàn)成的AJAX框架。下面是我定義的WatermarkBehavior類相應的代碼:
- 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);
- }
- }
當然,我們還可以更細致地控制上面的編碼,但這里僅展示了提供搜集注冊的腳本功能核心部分的代碼片斷,以及把它們生成到頁面中,然后實例化行為對象,并使其與相應的DOM元素建立關(guān)聯(lián),以及傳遞進視圖提供的選擇以便定制具體的實例介紹添加ASP.NET其他的AJAX技術(shù)。
【編輯推薦】