2011-07-27 4 views
0

私たちの主要なWebサイトのコンテンツセクションを編集する必要があると判断したユーザーの1人は、基本的なモデルは、ページ内の1つ以上のdivがCMSからコンテンツを取り込むことです。CMSコンテンツエディタ/ビューア

コンテンツを配信するにはコンテンツを配信するためにオブザーバーモデルを使用していますが、これは問題なく動作します。このページには、少なくとも3つのサーバーコントロールが含まれています。データプロバイダ(CMS)、コントローラ(サブジェクト)、コンテナ(オブザーバ)コンテナには、コントローラからプッシュされたデータで適切にレンダリングされる2つのコンテンツパネル(編集または表示)のいずれかが含まれます。

しかし、編集者とビューアのパネルを切り替えて(変更をプレビューできるように)、編集したコンテンツをデータプロバイダ(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をhiddenに設定する

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

短いアニメーションになりますがすべての基礎をカバーする。

作業の一部を与えられたが、どうやらそれが必要なのものではないのですとき私のオリジナルの提案だっただけでアイデア/オプション