2011-07-27 128 views
0

我們的一位用戶已決定他們需要能夠編輯我們主網站上的內容部分,並且我已被授予實施它的任務。基礎模型是,頁面中的一個或多個div將從CMS中填充其內容。CMS內容編輯器/查看器

爲了傳遞內容,我使用觀察者模型來傳遞內容,這很好。該頁面包含(至少)3個服務器控件;數據提供者(CMS),控制者(主體)和容器(觀察者)。該容器將包含兩個內容面板(編輯或查看)中的一個,這些面板將使用從控制器推送的數據適當地在屏幕上呈現。

但是,現在我需要能夠在編輯器和查看器面板之間切換(因此可以預覽更改),並且能夠將編輯的內容發佈到數據提供商(CMS),但是我不斷丟失編輯的內容在回發。我試圖覆蓋'SaveViewState'方法,但因爲內容面板是在預渲染期間創建的(因爲它依賴於ViewState屬性),所以控件集合總是顯示之前創建的對象(即當編輯面板是被顯示,控制集合中的對象是預覽面板)。

我不想走兩條控制渲染性能問題的道路;我正在考慮創建一個第三部分(可能是一個隱藏的領域),將存儲編輯的文本,但希望在這裏有人可能有一個更好的想法如何構建這個?

回答

0

最好的辦法是讓編輯器成爲一個單獨的頁面 - 將它們集合在一起會帶來很多挑戰,存在一些危險(您怎麼知道公衆無法編輯它)並創建長期維護問題。

+0

給出的作品的時候,但顯然這不是真實需要什麼這是我原來的建議... – Dave

+0

有創造性的方式來繞開這個問題。就像一個帶有iframe的ajax popover一樣。 。 。 –

0

似乎你幫我我可以提出一個建議:

有普通視圖和頁面編輯視圖如果用戶是正確的用戶級的。

在正常視圖下有一個表示編輯的按鈕,在編輯視圖下有一個按鈕叫做預覽。

當預覽按鈕被點擊:

$(".previewbutt").live("click",function(){ code to update database and update div content }); 

上面的代碼應該首先用於提交表單

$.ajax({async:false, url:'',data:}); 

然後做另一個調用來獲取內容,更新正常顯示DIV ,將editordiv設置爲隱藏

$('.normalview').show('slow'); 
$('.editor').hide('slow'); 

會有一個短的動畫,但會涵蓋所有的基礎。

只是一個想法/選項