如何在复杂的Web应用程序中支持用户编辑的内容?

时间:2012-06-08 16:53:57

标签: asp.net-mvc asp.net-mvc-3 razor dynamic-websites

我正在建立一个网站(使用ASP.NET,MVC 3,Razor),我不是在使用现成的CMS。这是因为我评估了很多现有的CMS,发现它们都有大量的学习曲线,我不需要的大量功能,它们迫使你进入面向页面的模型。通过“面向页面的模型”,我的意思是您可以指定一般的页面布局和样式表,但是用户可以编辑的对象是整个页面,例如,在中央面板中显示,也许您可​​以自定义侧边栏也是。

但是这个网站非常以设计为中心,需要比这更流畅和更精细。通过“以设计为中心”,我的意思是该网站是由图形设计师在Photoshop中构建的,并且大量使用图像和复杂样式将设计映射到HTML / css / js。此外,网站上的每个页面都完全不同。还有UI元素,如手风琴面板,我们需要用户能够编辑每个面板的内容,但肯定不是为手风琴提供动力的jQuery + HTML。用户是主题专家,但非技术性。

所以我会有一个包含大量复杂布局和样式的页面,我不希望用户访问它,但在此内部会有一个div包含我想要的文本用户能够编辑。

我怎样才能最好地完成这项工作?

到目前为止,我通过使用片段来实现这一点,这些片段是存储在外部文件中的少量html单元,用户可以编辑。在运行模式下,这些内容被加载并显示(如果您已登录并具有权限,则会使用一点“编辑此内容”按钮)。如果单击“编辑”按钮,将获得一个WYSIWYG编辑屏幕,您可以在其中编辑和保存更改。所以我可以控制所有杂乱的东西,并为用户可编辑的内容添加少量占位符。但这对我来说并不简单,我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:1)

不要暗示这一点,但这似乎是我目前正在研究的最相关的问题。我最近构建了类似于上面描述的内容,但是我从数据库中提取数据而不是静态文件。对于Controller中的每个页面(如/ about或/ contact),我以Json字符串键/值对的形式从DB中提取该页面的数据。 Key是占位符标记,Value是..值。反序列化后,我只需填充一个列表并将其分配给ViewBag,然后在CSHTML I ViewBag.List.Keyname中获取文本。

我有一个小的管理控制面板,允许我修改数据库中的文本。像你这样的小徘徊是一个好主意!

答案 1 :(得分:0)

好吧,我坚持原来的计划:

  

到目前为止,我通过使用片段来实现这一点,这些片段很少   存储在外部文件中的html单元,用户可以编辑。在   运行模式,这些是内嵌加载和显示(有一点“编辑   如果您已登录并拥有权限,则显示此“内容”按钮。如果您   单击编辑按钮,您将获得一个WYSIWYG编辑屏幕,其中   您可以编辑和保存更改。所以我可以控制所有凌乱的东西,   并为用户可编辑的内容添加少量占位符。但是这个   对我来说并不简单,我想知道是否有更好的   方式。

现在它运作得相当好。