成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用ASP.NET和AJAX解決手工拼接HTML問題

開發 后端
ADO.NET Data Service Client Library能夠輕松訪問到存在服務器端的數據,然而將數據展現出來仍需要人手拼接HTML這點就實在是讓人難以接受,所以我們現在就來看看如何利用ASP.NET AJAX Template解決這個問題。

Sys.UI.DataView

為了解決展示數據的問題,我們需要用到一個全新的客戶端控件,那就是Sys.UI.DataView了,簡稱DataView。我們會用DataView替換掉上一篇文章中所說到的人手拼接HTML的部分,用于迭代生成一個ul中的li元素,因此看起來是把DataView當作Repeater來用。實際上,DataView的功能類似于ListView加上DetailsView。

如果你把一個Array綁定到DataView上,它會顯示為一個ListView。與ListView的LayoutTemplate相類似的是,它也能夠定義控件展示的整體布局,并且僅僅是迭代輸出其中的一小部分。例如說,編寫一個有thead的table,并且僅僅是迭代輸出thead之后的tr。在這方面,是DataView和ListView完全一致的。***不同的是,客戶端暫時還沒有DataPager這樣的控件,所以DataView必須一次性的完整顯示整個Array的數據。

如果你把單個Object綁定到DataView上,它就會顯示為一個DetailsView。這使得你可以使用兩個DetailsView就做出經典的Master-Details展示模式,和在服務器端分別用ListView和DetailsView做出來的一樣。當然,你不能指望DataView能夠好像DetailsView那樣,自動幫你分析每一個數據項并映射出對應的HTML模板,因此HTML模板還是要你自己手寫的,但至少那是在HTML中編寫模板,編寫時能夠享受IDE帶來的各種好處,維護時也更容易看懂自己(或別人)原來寫下的HTML。

JavaScript語法

接下來,我們就要把DataView投入到實際應用中去了。首先,我們說一下如何用JavaScript來實例化一個DataView。有編寫ASP.NET AJAX客戶端代碼經驗的人對$create應該不會覺得陌生,因為DataView繼承自Sys.UI.Control,我們仍然可以用$create來實例化它。不過,在此之前,我們先要把對應的HTML編寫好:

<ul id="itemTemplate" class="sysTemplate">
  <li>
    <span class="award">{{ Award }}</span>
    <span class="winner">{{ Winner }}</span>
    <span class="film">{{ Film }}</span>
  </li>
</ul>

然后我們就可以基于itemTemplate這個HTML元素創建控件了:

$create(Sys.UI.DataView, {
    dataSource: new Sys.Data.AdoDataSource(),
    serviceUri: "WebDataService.svc",
    query: "OscarWinners"
  }, {}, {}, $get("itemTemplate"));

現在,頁面顯示出來的結果和之前我們人手拼接HTML的版本完全一致,不過我們已經不在需要維護嵌入在JavaScript中的HTML代碼了。

聲明性語法

如果你覺得上面的做法還不夠好,要在pageLoad()里面寫一個$create,那么聲明性語法可能正是你需要的。大家應該記得很久很久之前,在ASP.NET AJAX還叫做Atlas的時候,就已經有過聲明性語法的設計,那就是xml-script。不知為何,后來Microsoft放棄了這一設計,現在聲明性語法又回來了,而且設計得比以前的xml-script還要更好。假如不用$create的話,通過聲明性語法實例化一個DataView僅需要這樣做:

 <body
  xmlns:sys="javascript:Sys"
  xmlns:dataView="javascript:Sys.UI.DataView"
  sys:activate="*">
  <ul id="itemTemplate" class="sysTemplate"
    sys:attach="dataView"
    dataView:datasource="{{ new Sys.Data.AdoNetDataSource() }}"
    dataView:serviceuri="WebDataService.svc"
    dataView:query="OscarWinners">
    <li>
      <span class="award">{{ Award }}</span>
      <span class="winner">{{ Winner }}</span>
      <span class="film">{{ Film }}</span>
    </li>
  </ul>
</body>

我們所需要更改的代碼包括:在body元素上聲明有關的xmlns,將JavaScript中的名字空間映射到HTML上,或者你可以理解為映射到XML/XHTML上。

通過sys:activate="*"這個聲明,讓ASP.NET AJAX知道它需要去解釋頁面上所有的聲明性語法,并激活對應的組件.將原本使用$create初始化時傳遞給實例的屬性、事件、引用改為用聲明性語法,直接寫在HTML元素的定義上.經過這三步,我們就可以將原來使用$create創建的組件改為使用聲明性語法創建了。

小結

DataView使得我們能夠使用HTML模板,來避免手工拼接HTML帶來的種種問題,同時聲明性語法讓我們能夠如同聲明服務器端控件一樣聲明客戶端組件。雖然在ASP.NET AJAX 4.0 Preview 3中這些功能仍有小bug,例如我想用聲明性語法創建我自己編寫的InPlaceEditoBehavior,這在初始化階段毫無問題,但卻會在頁面卸載銷毀對象之時拋出腳本錯誤。

由于我覺得ASP.NET AJAX 4.0 Preview 4很快就要出來了,所以我也就不準備去深入研究Preview 3了,等Preview 4出來了再去好好看看源代碼。

原文鏈接:http://www.cnblogs.com/cathsfz/archive/2009/03/14/1411312.html

【編輯推薦】

  1. 詳解ADO.NET客戶端開發數據驅動的應用程序
  2. 詳解Ajax在ASP.NET中的實現方式
  3. ASP.NET開發教程
責任編輯:彭凡 來源: <a href="http://cathsfz.cnblogs.com/">cathsfz.c..
相關推薦

2009-07-23 10:06:29

2009-07-22 16:05:34

ASP.NET AJA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 13:41:15

ASP.NET AJA

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-07-20 10:16:13

配置ASP.NET A

2009-07-22 15:58:52

ASP.NET AJA

2009-07-31 13:24:43

ASP.NET AJA

2009-07-28 09:02:32

asp.net aja

2009-07-28 12:35:37

querystring

2009-07-20 17:39:36

WCF服務ASP.NET AJA

2009-08-07 16:09:25

ASP.NET AJA

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-29 15:53:22

ASP.NET AJA

2009-07-20 13:14:25

安裝ASP.NET A

2009-07-28 16:08:43

ASP.NET AJA

2009-07-29 16:08:07

ASP和ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品一区二区在线 | 成人午夜精品 | 成人免费视频观看 | 爱爱综合网 | 成人av一区二区三区 | 97精品超碰一区二区三区 | 欧美日韩精品久久久免费观看 | 精品一区av | 精久久久| 国产精品成人一区 | 国产精品美女久久久久久免费 | 国产精品成人一区二区三区夜夜夜 | 日韩视频中文字幕 | 精品免费国产一区二区三区 | 欧美爱爱视频 | 色婷婷综合久久久中文字幕 | 一区二区小视频 | 91免费电影 | 涩涩99| 国产精品黄视频 | 亚洲成人精品国产 | av在线视| 亚洲福利视频一区二区 | 欧美日韩久久精品 | 亚洲综合网站 | 日韩精品久久久久 | 人人看人人射 | 午夜男人的天堂 | 精品久久久网站 | 精品免费国产视频 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 午夜影视网 | 日日躁狠狠躁aaaaxxxx | 久久久久电影 | 久久成人精品视频 | 亚洲精品一级 | 久久精品国产99国产精品 | 成人免费小视频 | 久久久夜色精品亚洲 | 日本小电影在线 | 亚洲一区二区三区在线免费观看 |