在我的職業生涯中,我多次遇到這個問題,從來沒有找到一個優雅的解決方案。想象一下,你有一個簡單的頁面,有一箇中繼器。您通過數據綁定在服務器端填充該中繼器。這太棒了,快速工作,並做它應該的。但是現在你想添加分頁器到該中繼器,否則改變輸出。通過Ajax實現是實現富客戶端交互的首選方式。在ASP.NET中使用JavaScript模板
因此,您創建一個Web服務,以JSON的形式爲您提供數據,但是現在您被卡住了......要麼您必須編寫複雜的客戶端代碼來查找每個需要在每個中繼器中修改的字段 - 項目,或者你必須吹走中繼器的整個服務器端輸出,並從頭開始構建新的HTML,或者我最近使用的方法,首先重複項目,吹走其他所有內容並克隆第一項儘可能多的時間,你需要和修改它的領域。所有描述的方法都不是最優的,因爲不管它們是什麼,它們都需要服務器端(即中繼器中的模板)和客戶端(用於顯示JSON數據的JavaScript)上的重複邏輯, 。有一個更好,更簡單的方法來做到這一點。首先想到的是,不是從Web服務器返回JSON,而是返回預填充中繼器的HTML。但對於這樣的事情,我不妨使用ASP.NET AJAX更新面板。單獨的Web服務的輸出不會更小。
接下來我想到的是JavaScript模板。如果有什麼方法可以在服務器端採用未經處理的中繼器模板,並將其轉換爲JavaScript模板,該模板可以在加載時嵌入在頁面中,也可以作爲Web服務響應的一部分。但是,我找不到任何現有的解決方案。我想不出一個簡單的方法來做到這一點。有任何想法嗎?
P.S.在頁面加載時將JavaScript模板呈現給客戶端,並且使用JavaScript來填充它,而不在服務器上呈現初始視圖(沒有中繼器和數據綁定)是不可能的。我太在乎表演。
如果您將模板卸載到客戶端,您的性能會如何變差?這實際上將是最好的解決方案。 – Tejs 2011-05-12 03:19:20
沒有。如果您在服務器上禁止初始頁面加載,則會返回純HTML。如果您返回JavaScript模板和JSON(作爲頁面的一部分,或者作爲AJAX請求禁止上帝),則不僅需要提供純HTML,還必須在頁面完成加載後使用JavaScript處理它。頁面的初始加載應始終在服務器上完全呈現,因爲它是受控制的環境。 – 2011-05-12 03:27:04
許多像gmail一樣被販賣的網站會不同意。 – Tejs 2011-05-12 03:30:11