程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 基於jTemplates、ascx協同工作的酷UI模板技術

基於jTemplates、ascx協同工作的酷UI模板技術

編輯:關於ASP.NET

在很久很久以前,也就是asp.net ajax剛引起大眾關注不久,asp.net ajax團隊成員ScottGu發布 了一篇非常實用的文章:

英文:Tip/Trick: Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios ,

中文:技巧和訣竅:在不用UpdatePanel的情形下可與ASP.NET AJAX 使用的酷UI模板技術

看完之後,非常受用,並給我留下了非常深刻的映像,之後在很多場景裡都借鑒了 ScottGu的這種方案。如果你也仔細閱讀過這篇文章,那麼應該可以明白在這種方式中,是如 何將客戶端繁瑣的拼接html字符串或dom片段的工作,借助asp.net領域的ascx用戶控件來方 便快捷及優雅的完成的。

在EnjooSite的開發過程中,因為涉及到大量的客戶端編碼,自然少不了大量的客戶端頁 面建構,因此,我便再次應用了ScottGu的這種方案,只不過根據EnjooSite項目的特點,進 行了一定程度的優化和改進,同時引入了jTemplates javascript庫進行協同工作。

針對jTemplates的特點,以及ScottGu酷UI模板技術的各自優點,我們來看看我是如何改 進的:

第一步:熟悉jTemplates的工作方式

widgetContainer.setTemplate(template, null);
widgetContainer.processTemplate(data);

jTemplates的工作方式非常直觀:

第一句setTemplate(template,null),將jQuery對象widgetContainer設置為可模板化處 理對象,模板結構由參數template確定;

第二句processTemplate(data);則對模板化的對象進行數據呈現處理,實際數據由參數 data確定。

我之所以特別解釋這2句,是因為想引起大家注意,jTemplates的工作過程中,有模板和 數據這2個重要的概念。

第二步:獲取template和data

既然jTemplates需要模板和數據的協同工作,那麼我們可以怎樣方便、快捷的提供出這2 項內容呢?

template.ascx

1 <div>
2   {#if $T.staticHTMLs.length>0 }
3   {#foreach $T.staticHTMLs as item}
4   <div id="StaticHTML_{$T.item.id} _Viewer" commandname="enjoosite_statichtml_item" commandargument="{$T.item.id}">{$T.item.description}</div>
5   {#/for}
6   {#/if}
7   <div id="staticHTML_{$T.widgetId}_Pager" class="pager" commandargument="{$T.maxItems}_{$T.listCount}_{$T.pageCount}_ {$T.widgetId}"></div>
8   <div class="enjoosite_widget_auto_action">
9     (function($){
10          ensure({js:'/jquery-pager.1.1.js'},function(e){buildStaticHtmlPager ('<%= string.Format("staticHTML_{0}_Pager",WidgetId) %>');});
11     })(jQuery)
12   </div>
13 </div>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved