CommunityServer + ASP.NET AJAX 霸王硬上弓篇

不知有沒有人試過在Community Servery 2.1上加掛ASP.NET AJAX?

原則上,只要利用之前提過的方法修改Community Server的web.config檔,接著試著新增一個WebForm1.aspx,拉拉ScriptManager,UpdatePanel,Label,Button的馬上就可以體驗到在Community Server網站"新增"ASP.NET AJAX網頁的快感! 有沒有留意到我強調"新增"? 重點來了,就在初試成功,想要快快樂樂地為Blog首頁也加上各式AJAX特效時,不久會被"Extender controls may not be registered after PreRender."錯誤訊息電到手腳發軟~~~

在Community Server, ASP.NET AJAX與AJAX Control Toolkit的Souce Code裡追了幾個晚上,我大概了解其中的祕辛。Community Server引進了一套Skin/Theme的概念,也就是如你現在所看到的Blog頁面,其實是由一個個.ASCX所拼湊而成的,而且可以隨意切換。舉例來說,我們可以為"最新回應"清單設計出兩個不同的ASCX,後端的元件只負責由資料庫中取出資料,至於前端要用Repeater或DataGrid來呈現,完全由ASCX決定。這種做法提供了極大的客製化彈性,但背後乃是透過一些幾近Hacking的手法完成的,其中一個重要環節便是巧妙地override了Render、PreRender這些事件!  無奈英雄所見略同,ASP.NET AJAX也要依懶PreRender來達成輕輕鬆鬆將原有元件升級的神奇魔法,於是二者在Control的生命週期假設上有了衝突...  說來話長,總結一句,要解決這個衝突,得去更動二者其中之一的核心架構,會產生多大的後遺症無法評估...

可是,你也許注意到了,現在Blog右方的導覽SideBar可以動態開合,這不就是ASP.NET AJAX Control Toolkit中的Accordion嗎? 明明就說不能整合了,這又是怎麼做到的呢?

對由ASP.NET AJAX入門的人來說,AJAX是透過拖拖拉拉Web Control,寫寫Server-Side Event達成的;而在JavaScript老鳥的眼裡,ASP.NET AJAX只是一群好心的Developer為了讓不會Javascript的初心者也能使用AJAX的善心義舉,說穿了還不就是靠Javascript+DOM在表演。我用的賤招是先做一個Accordion的網頁,查出它用了哪些js,手工蒐集下來,一一在我的ASCX中用<script src="..">包含進來,AJAX Control Toolkit的設計很棒,絕大部分複雜的邏輯都在.js中,網頁中只需要再加一兩行Javascript就可以完成預期的效果。就這樣,明明不能相容的兩個東西,就這樣硬是整在一起了,Kero Kero Kero Kero....

不過,如果有人找到可以真的在Community Server Skin ASCX中使用AJAX Control的方法,記得跟我說,我會幫忙寫一篇"CommunityServer + ASP.NET AJAX 明媒正娶篇"。

歡迎推文分享:
Published 16 March 2007 03:36 AM 由 Jeffrey
Views: 11,008



意見

# rovy said on 04 July, 2008 06:35 AM

好贱

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<March 2007>
SunMonTueWedThuFriSat
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應
  • 2008-07-04 rovy
    CommunityServer + ASP.NET AJAX 霸王硬上弓篇
    好贱

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication