0

ユーザーの 1 人が、メイン Web サイトのコンテンツのセクションを編集できるようにする必要があると判断し、それを実装するタスクが私に与えられました。基礎となるモデルは、ページ内の 1 つ以上の div に CMS からコンテンツが入力されるというものです。

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

ただし、エディター パネルとビューアー パネルを切り替えて (変更をプレビューできるようにするため)、編集したコンテンツをデータ プロバイダー (CMS) に公開できるようにする必要がありますが、ポストバックで編集したコンテンツを失い続けています。「SaveViewState」メソッドをオーバーライドしようとしましたが、コンテンツ パネルは事前レンダリング中に作成されるため (ViewState プロパティに依存するため)、コントロール コレクションは常に以前に作成されたオブジェクトを表示します (つまり、編集パネルが表示されている場合、コントロール コレクション内のオブジェクトはプレビュー パネルです)。

パフォーマンスの問題のために両方のコントロールをレンダリングする道をたどりたくありません。編集したテキストを保存する 3 次コンポーネント (おそらく非表示フィールド) を作成することを検討していますが、ここにいる誰かがこれを構造化する方法についてより良いアイデアを持っていることを望んでいましたか?

4

2 に答える 2

0

最善の策は、エディターを別のページにすることです。すべてをひとまとめにすると、多くの課題と少しの危険が生じ (一般の人が編集できないことをどのようにして知ることができますか)、長期的なメンテナンスの問題が発生します。

于 2011-07-27T16:26:09.520 に答える
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');

短いアニメーションがありますが、すべての基本をカバーします。

単なるアイデア/オプション

于 2011-08-05T10:08:29.497 に答える