CMS内容编辑器/查看器

时间:2011-07-27 15:52:50

标签: c# asp.net viewstate composite-controls

我们的一位用户已决定他们需要能够在我们的主网站上编辑部分内容,并且我已经完成了实施它的任务。基础模型是页面中的一个或多个div将从CMS填充其内容。

要提供内容,我正在使用观察者模型来传递内容,这很好用。该页面包含(至少)3个服务器控件;数据提供者(CMS),控制者(主体)和容器(观察者)。容器将包含两个内容面板中的一个(编辑或视图),它将在屏幕上适当地显示从控制器推送的数据。

但是,现在我需要能够在编辑器和查看器面板之间切换(因此可以预览更改)并能够将编辑过的内容发布到数据提供者(CMS),但我一直在丢失已编辑的内容回发。我试图覆盖'SaveViewState'方法但是因为内容面板是在prerender之后创建的(因为它取决于ViewState属性),控件集合总是显示之前创建的对象(即编辑面板是如图所示,控件集合中的对象是预览面板)。

我不想走两条控制渲染性能问题的道路;我正在考虑创建一个存储已编辑文本的第三个组件(可能是一个隐藏字段),但是希望有人能够更好地了解如何构建它?

2 个答案:

答案 0 :(得分:0)

最好的办法是让编辑器成为一个单独的页面 - 将它们整合在一起会带来很多挑战,有点危险(你怎么知道公众无法编辑它)并产生长期维护问题。

答案 1 :(得分:0)

在您帮助我的时候,我可能会提出一个建议:

如果用户具有正确的用户级别,则

在页面上具有普通视图和编辑视图。

在普通视图下有一个按钮,表示编辑,编辑视图下有一个名为preview的按钮。

单击预览按钮时:

$(".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');

会有一个简短的动画,但会涵盖所有基础。

只是一个想法/选项