通过CMS处理用户控件中的内容?

Composite C1中是否有一种方法可以管理通过后端在页面上使用的ASP.NET用户控件中的静态文本?

在这个答案中,我想你可以通过Visual Editor(html文档)维护“静态文本”,允许你的用户做标题,样式,粗体等。如果你只是想要一个简单的大文本框这个可以简化。

首先在Data透视图上创建一个新的全局数据类型 – 命名它(在下面的代码示例中,我将其命名为Maw.Content)并给它这两个字段:

  • FieldKey字符串(32)(小部件:默认的TextBox)
  • FieldContent字符串(无限制)(小部件:Composite.Widgets.String.VisualXhtmlEditor)

保存新数据类型后,可以向其添加“记录” – 并指定字段键和相关内容。

这应该负责管理内容 – 您获得的UI应该非常用户友好。 您可以右键单击树中的数据类型,然后使用“在内容透视图中显示”命令,这将使您的数据类型显示在Content | 网站项目。 这样,您的用户就不必使用Data透视图。

如果您不需要用户添加/删除项目,请考虑将用户对数据文件夹的访问权限限制为“编辑”。 右键单击包含数据项的文件夹,然后选择“编辑权限”。

从命名字段输出XHTML在用户控件中,您可以获取与特定FieldKey相关的html,如下所示:

using System; using System.Linq; using System.Xml.Linq; using System.Web.UI; using Composite.Data; using Composite.Core.Xml; public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string fieldKey = "SomeKeyHere"; string xhtmlString; using( var connection = new DataConnection()) { xhtmlString = connection.Get().Where(f => f.FieldKey == fieldKey).Select(f => f.FieldContent).FirstOrDefault(); } if (xhtmlString != null) { XhtmlDocument htmlDoc = XhtmlDocument.Parse(xhtmlString); foreach (XNode bodyNode in htmlDoc.Body.Nodes()) { this.Controls.Add( new LiteralControl(bodyNode.ToString())); } } else { this.Controls.Add(new LiteralControl("Unknown FieldKey: " + fieldKey)); } } }